{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "env: PYTORCH_ENABLE_MPS_FALLBACK=1\n"
     ]
    }
   ],
   "source": [
    "# For Mac compatibility\n",
    "%env PYTORCH_ENABLE_MPS_FALLBACK=1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from datasetsforecast.long_horizon import LongHorizon\n",
    "\n",
    "from neuralforecast.core import NeuralForecast\n",
    "from neuralforecast.models import NHITS, PatchTST, iTransformer, TSMixer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_data(name):\n",
    "    if name == \"ettm1\":\n",
    "        Y_df, *_ = LongHorizon.load(directory='./', group='ETTm1')\n",
    "        Y_df = Y_df[Y_df['unique_id'] == 'OT']\n",
    "        Y_df['ds'] = pd.to_datetime(Y_df['ds'])\n",
    "        val_size = 11520\n",
    "        test_size = 11520\n",
    "        freq = '15T'\n",
    "    elif name == \"ettm2\":\n",
    "        Y_df, *_ = LongHorizon.load(directory='./', group='ETTm2')\n",
    "        Y_df = Y_df[Y_df['unique_id'] == 'OT']\n",
    "        Y_df['ds'] = pd.to_datetime(Y_df['ds'])\n",
    "        val_size = 11520\n",
    "        test_size = 11520\n",
    "        freq = '15T'\n",
    "    elif name == 'etth1':\n",
    "        Y_df, *_ = LongHorizon.load(directory='./', group='ETTh1')\n",
    "        Y_df['ds'] = pd.to_datetime(Y_df['ds'])\n",
    "        val_size = 2880\n",
    "        test_size = 2880\n",
    "        freq = 'H'\n",
    "    elif name == \"etth2\":\n",
    "        Y_df, *_ = LongHorizon.load(directory='./', group='ETTh2')\n",
    "        Y_df['ds'] = pd.to_datetime(Y_df['ds'])\n",
    "        val_size = 2880\n",
    "        test_size = 2880\n",
    "        freq = 'H'\n",
    "\n",
    "    return Y_df, val_size, test_size, freq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "91fbc494a7fe4fa2887882d5c30f1e2b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "239891838cc240c09fceb40ecd62eae4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7c235f08bfe14bb5831d6eafd7175c07",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b085826c7d294fe08e4a06bde2929240",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e8811bebb01944d39853e8b41066f2ba",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ab6c10f5a7184539aa960bed94440860",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f1fa4e91f949486faca7cfa767ff0289",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8594e4e86f4442b0813985def18dcceb",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "71020bcaa8a14ac49aa71d427e561ece",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c72f25c9c8f04f16a81dd8740f7f55a8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f00bd6f880b149828614a24ac54544c8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b76806d3fd604635ad4a4af13e7a8c19",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f8beda7f11c2483eb05a8616def86285",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e043ccf8ed3a4e3d8bc358c203156608",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4e0ae65b439d4638ab62eeef39fc6909",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "729cb55929d74217ba0b5d3dc46d6a05",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "66175ce780bb47d791fb326a58382639",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f7d2d906c0894052898032279b7c6a5e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4616528a4a1a4f04a72757ef8a719bc8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fd734e2ef14a4b54a91849c787f5f15e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "67eb3223ccbf489a948c9da5d916a4b4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0d6434d6d01048dbb448c3cc74fd5056",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3447287f398e4c439c4bf76a2e08f7e2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f5d4cea385c44dddb827712a0a248db8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b533c7804ce74b1ab1fbc08a643f9fae",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "80d36f6bf763414b8cfa6fa29f26bf2d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b4771bf9cf1842a39fb62898d8195b2e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f1c0e2be1c624b719e22f57d1e45f970",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "896f784fb1e245639406add41eb19053",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ef257b7f3065458fb3a78cf9e524560b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fffac29b5ba249f9a3fac83d2c831194",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a67418ed1dc745f99b18b4c6a52caff2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "844d4f9f212d49b2b61fe0293ce805e3",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0d24cd4ae91943fca55ef4a0aaacdcdf",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1162a0b32a5243bea658b559d4de2e3e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b7fd4c84d1594533add0f5adaca4296c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8d8f15fb30774be5a12817c5c49cde12",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "25d86d63e1f042b59b4ac28a07583a19",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d2927f0191d94a1295bc17bddf333408",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "45a74b840ac243eb9b39da6b100d8d38",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d9496c00a9e04578bc2eddde36360418",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "626c16e0aec540c4a0489e9ff51cedac",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e272000e33224519aeff5a757b94385f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from utilsforecast.losses import mae, mse\n",
    "from utilsforecast.evaluation import evaluate\n",
    "\n",
    "Y_df, val_size, test_size, freq = load_data('ettm1')\n",
    "\n",
    "horizon = 96\n",
    "\n",
    "models = [\n",
    "    iTransformer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    TSMixer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    NHITS(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3),\n",
    "    PatchTST(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3)\n",
    "]\n",
    "\n",
    "nf = NeuralForecast(models=models, freq=freq)\n",
    "nf_preds = nf.cross_validation(df=Y_df, val_size=val_size, test_size=test_size, n_windows=None)\n",
    "nf_preds = nf_preds.reset_index()\n",
    "\n",
    "ettm1_evaluation = evaluate(df=nf_preds, metrics=[mae, mse], models=['iTransformer', 'TSMixer', 'NHITS', 'PatchTST'])\n",
    "ettm1_evaluation.to_csv('ettm1_results.csv', index=False, header=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d62ad071b30d41f98d1f68d82b28ceb3",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ca689837a87b4d98afe0eb2ebaf79bf9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "790e71271f7143ada823a59d0911a730",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9d6cb01539074c8faeee9fe0a7f9c6f9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a5fc1ac08dd746c6aaf73d0db055087b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "85362c0f205a4d95bd93a7527384f181",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "597f252267474802ac4ee8d692e0a2bd",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b41fa5dc9c1e4b708c71906003337de7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8185b004e93c4c949be5d921d7476936",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "73f2ddaf91a54b02bd61c5d1192a08c7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5f9248635f39419fbb7a3c0aaa2f9c16",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b16b7fca8440445993b3186d520a76c2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "64509a8a730c452da33862df20f5e7ec",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b32e259deec34e12a6434efcb06634fa",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1440b056e65846b8a3676a0fd1a7886f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "981e797be4124711bd0bd7f1f10db9b7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8a349ebc06794691a4ffde08ce560a95",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a8183f25dbe64f109d4ee0995d216308",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7b28be2e08e64747a6a30b3d8e561495",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ebe8916842c94e51afda931171347535",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "96ef93ced49a4a67acae3388714b8e84",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ffeea852d6904f4ebff7eb6ecc723da9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ec7153fbbb2441aab74768db7613a05b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9476f81abac1483a99a110616eb59534",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bbf6b5702bff4d1689f5b3a492be69ff",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e9d50258e6674fe79932e9fd6fcf942d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5aefa174bc784e329f58023fd5afbed2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "30239cbdb14a45acbd168853b76436b7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a025da2de88e404a9c14345b0ff72652",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4d342ea9f71d4f7e84f4704e9012af41",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8a0ecedfcd9948c0a23328dd7f64a7bb",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5df80daf86894658bad6b685ad6c9169",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "579e0f607c4648b8baf1f0e47ffc625a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "91252b4e9b1d42e1bcd071928adff9a5",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "51effb063fb34f75b871458bd8fc8d02",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "02bdeb4152e84b1abcc24977164dcce0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "Y_df, val_size, test_size, freq = load_data('ettm2')\n",
    "\n",
    "horizon = 96\n",
    "\n",
    "models = [\n",
    "    iTransformer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    TSMixer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    NHITS(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3),\n",
    "    PatchTST(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3)\n",
    "]\n",
    "\n",
    "nf = NeuralForecast(models=models, freq=freq)\n",
    "nf_preds = nf.cross_validation(df=Y_df, val_size=val_size, test_size=test_size, n_windows=None)\n",
    "nf_preds = nf_preds.reset_index()\n",
    "\n",
    "ettm2_evaluation = evaluate(df=nf_preds, metrics=[mae, mse], models=['iTransformer', 'TSMixer', 'NHITS', 'PatchTST'])\n",
    "ettm2_evaluation.to_csv('ettm2_results.csv', index=False, header=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c2840510eacc40b69e88d06e7c45221d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b2c6c8a316fd4a889ed70a02d8237be5",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "780dce4b5dcc4dfca9fdd061f26366f8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c8c1981683d346978ca1bee621d4971f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b0244f447db4446384a38353752a987b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6fd2fdb551144ea6b622732f0a92ff44",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b8f34fda538a4aa0b942ea7bd86d4a24",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "98f406d8b1784ebeb6f3c51445b6fe0b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e3d3bb86f4324d95b197d93d15551ddc",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "baa3b594f34a4bfab764f33a559ef247",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d1e16a1faba145d89de3a344420ca500",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c81c1a83a96843e6acadb621971159fe",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "20e33c225b2441968b125d437e34af37",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6714881b0cf84ac18ccda3ba266cfd0e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5394520693da41f1b13f728ad23db1f0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6fe95e3325ea49cab2ee4928d788329a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b5de247052d54f0b91eb1174a9718953",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "23c307feb53f46c9bec40305a9f49603",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f0d7d8d50a404a34b36c37d06da18e37",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7188437130034d6e8d13a9abbde42189",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f4346bbdfc314868b6b19bdca34eeeaa",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "91dff0df1aeb41b4a8cda2c149d7e1d2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e435fb416a1643a7ad64a4d211a77aea",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ae5306f8e869443ba48c20abbe127544",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "57728b9e8ced4004b181f2cab2a3cb39",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2a055f1864a549468b3959149c5a619e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7db73dc5be2648e59401137a6a984f1f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5a88872581894fa3b336ca43873f00c1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b7812f90fffd4236a61098ea26c2b912",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "31c9d759ba74451b84506b841fa16c34",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1bdfa4d9ac5b40db90dc158166e67ccc",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1fb0910b45dc4af79f055d64a6b6bcb1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "89d9a32d1c624c928ab39eaaafe5c1d4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "055cbb35483d4ea3bf9d1df9c35769df",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "35e24135ac6c49fd8457bfd3a2d89b07",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c5afccf83ba042a3a00d5d9741d1c4f1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f3bd322f53ac414a994ca8fa883a2a2e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1144bab4aa374e6a9f10bdd620a2b7a6",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "df1072a102574a38a09fc4f48625cb07",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9d26f159bed54e8f912e8ce608787f4d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "Y_df, val_size, test_size, freq = load_data('etth1')\n",
    "\n",
    "horizon = 96\n",
    "\n",
    "models = [\n",
    "    iTransformer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    TSMixer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    NHITS(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3),\n",
    "    PatchTST(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3)\n",
    "]\n",
    "\n",
    "nf = NeuralForecast(models=models, freq=freq)\n",
    "nf_preds = nf.cross_validation(df=Y_df, val_size=val_size, test_size=test_size, n_windows=None)\n",
    "nf_preds = nf_preds.reset_index()\n",
    "\n",
    "etth1 = evaluate(df=nf_preds, metrics=[mae, mse], models=['iTransformer', 'TSMixer', 'NHITS', 'PatchTST'])\n",
    "etth1.to_csv('etth1_results.csv', index=False, header=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n",
      "INFO:lightning_fabric.utilities.seed:Seed set to 1\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cad5a5bf49704b7b8234e418c6b1cc12",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fdec8a942d104f159a6243b939cc0f20",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a5ad9c9d7628431a9704db45cd975f3d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cacb4c5e34094806aedb6e2908fd749b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2cf5f23a92384f9786995115da1c7ea1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "25acca46635745e7bd218ca6c4b10b2d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a61c2e356f914113b13dcbcd06af1142",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c1fcb8467ec743e8bdac106e976b24eb",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "604f4e063486482d9061b6884c1ca78e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "92866b69f428438597f207c2771e0152",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "aec48339e7db4888aba811b1ccff7128",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a487da572e8f4b1e9cd05a7cbdf5a538",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b555b8e4a29e46798b8137bbf0ba4e40",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f4f7ba43e6414bab868cb61ca5e87424",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9fdf1d66007845aea87b46463a0effed",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "40eb77285b364a0f988b8e50a6cfea03",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fdd8322c85624e219d8b16f66bf3fb84",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0a039081ed024162b41d5c9ce26ab3fd",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5598e85bdfa245b897977fe237a55096",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2f7d4385f14349d99363611cb4198dec",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a5854f7cea4a48358e824c48ef00a34e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "433fa1bb68954c30bebe796f99db9e50",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8438104acf79445ba76d76a0c5715e57",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6630f4b6af444d27a9f63931b919c20a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7d544ad36ac8414392df69986a35dfdb",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8db67f3bf00e4d31ab0054f0f429effa",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1c84a07a98f04d2da8345147a9fa1d40",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "72915e0863934d9bb5f94244c4caca12",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "de81e71067e9471c89f9d7c873d68df9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c1f1f1d4c9b04958bfaf654fc3ad498f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "67fd2910b1d048448a8e58aafb39efc8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e060ddf4ded84b5c9f7feff1fd8f4f80",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8a2f5e4ca32e4afeae7b2a55370e906b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "50ac7678a94547599670ae6c90ace090",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Training: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5a1b52ccc332442682a5047a9ba3c067",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "394a0d76a82e4b6296da906e0f86e355",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "014f0474d83349cba2cc8e7d8382ab9e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bbf46cb6cbfb40d3adbce5076a4c7d7c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Validation: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "299f9cb02c2e4c1f8c46b557db16b5cf",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Predicting: |          | 0/? [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "Y_df, val_size, test_size, freq = load_data('etth2')\n",
    "\n",
    "horizon = 96\n",
    "\n",
    "models = [\n",
    "    iTransformer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    TSMixer(h=horizon, input_size=3*horizon, n_series=1, max_steps=1000, early_stop_patience_steps=3),\n",
    "    NHITS(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3),\n",
    "    PatchTST(h=horizon, input_size=3*horizon, max_steps=1000, early_stop_patience_steps=3)\n",
    "]\n",
    "\n",
    "nf = NeuralForecast(models=models, freq=freq)\n",
    "nf_preds = nf.cross_validation(df=Y_df, val_size=val_size, test_size=test_size, n_windows=None)\n",
    "nf_preds = nf_preds.reset_index()\n",
    "\n",
    "etth2 = evaluate(df=nf_preds, metrics=[mae, mse], models=['iTransformer', 'TSMixer', 'NHITS', 'PatchTST'])\n",
    "etth2.to_csv('etth2_results.csv', index=False, header=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>metric</th>\n",
       "      <th>iTransformer</th>\n",
       "      <th>TSMixer</th>\n",
       "      <th>NHITS</th>\n",
       "      <th>PatchTST</th>\n",
       "      <th>dataset</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>mae</td>\n",
       "      <td>0.199222</td>\n",
       "      <td>0.179790</td>\n",
       "      <td>0.254200</td>\n",
       "      <td>0.180111</td>\n",
       "      <td>etth1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>mse</td>\n",
       "      <td>0.066427</td>\n",
       "      <td>0.055466</td>\n",
       "      <td>0.108906</td>\n",
       "      <td>0.056225</td>\n",
       "      <td>etth1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>mae</td>\n",
       "      <td>0.297459</td>\n",
       "      <td>0.285610</td>\n",
       "      <td>0.300729</td>\n",
       "      <td>0.278915</td>\n",
       "      <td>etth2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>mse</td>\n",
       "      <td>0.144884</td>\n",
       "      <td>0.135374</td>\n",
       "      <td>0.149168</td>\n",
       "      <td>0.129014</td>\n",
       "      <td>etth2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>mae</td>\n",
       "      <td>0.129120</td>\n",
       "      <td>0.123397</td>\n",
       "      <td>0.245856</td>\n",
       "      <td>0.121257</td>\n",
       "      <td>ettm1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mse</td>\n",
       "      <td>0.028905</td>\n",
       "      <td>0.027247</td>\n",
       "      <td>0.100262</td>\n",
       "      <td>0.026536</td>\n",
       "      <td>ettm1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mae</td>\n",
       "      <td>0.218220</td>\n",
       "      <td>0.187393</td>\n",
       "      <td>0.209624</td>\n",
       "      <td>0.178034</td>\n",
       "      <td>ettm2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mse</td>\n",
       "      <td>0.080266</td>\n",
       "      <td>0.066310</td>\n",
       "      <td>0.082975</td>\n",
       "      <td>0.062773</td>\n",
       "      <td>ettm2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  metric  iTransformer   TSMixer     NHITS  PatchTST dataset\n",
       "0    mae      0.199222  0.179790  0.254200  0.180111   etth1\n",
       "1    mse      0.066427  0.055466  0.108906  0.056225   etth1\n",
       "2    mae      0.297459  0.285610  0.300729  0.278915   etth2\n",
       "3    mse      0.144884  0.135374  0.149168  0.129014   etth2\n",
       "4    mae      0.129120  0.123397  0.245856  0.121257   ettm1\n",
       "5    mse      0.028905  0.027247  0.100262  0.026536   ettm1\n",
       "6    mae      0.218220  0.187393  0.209624  0.178034   ettm2\n",
       "7    mse      0.080266  0.066310  0.082975  0.062773   ettm2"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "files = ['etth1_results.csv', 'etth2_results.csv', 'ettm1_results.csv', 'ettm2_results.csv']\n",
    "datasets = ['etth1', 'etth2', 'ettm1', 'ettm2']\n",
    "\n",
    "dataframes = []\n",
    "\n",
    "for file, dataset in zip(files, datasets):\n",
    "    df = pd.read_csv(file)\n",
    "    df['dataset'] = dataset\n",
    "\n",
    "    dataframes.append(df)\n",
    "\n",
    "full_df = pd.concat(dataframes, ignore_index=True)\n",
    "full_df = full_df.drop(['unique_id'], axis=1)\n",
    "full_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAXRCAYAAABxVdQKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9f3SW1Z0v/L9DMMRqwbFgsDVGtFZgaC0GlR+lTk9LLLWO9dFHWkeoLYyloa3A6tMxRVukU6lzFIMeQZmqqdOCaUc71pmcwdhZFihMe0yTzjlPnY4zVeNDk0E4o6gdoUC+f/g1p2lyqeF38PVa61or974+1773jqywfbOz75Kurq6uAAAAAAAAvQw61AMAAAAAAIDDlRAdAAAAAAAKCNEBAAAAAKCAEB0AAAAAAAoI0QEAAAAAoIAQHQAAAAAACgjRAQAAAACggBAdAAAAAAAKCNEBAAAAAKCAEB3gTejXv/51Fi9enLa2tl73mpqasnjx4j6fKykpyec+97nX7f+FF17Il770pdTU1GTEiBEpKSkp7BMAAN6sDvS6/B/+4R/y6U9/OqNHj84xxxyTd7zjHbnooovS0tKyjyMHeHMRogO8Cf3617/O9ddfX7hYv/766/ep/23btmXVqlXZsWNHPvaxj+1TXwAAcKQ60OvylStX5qmnnsrVV1+dpqamLF++PFu2bMnEiRPzD//wD/vUN8CbyeBDPQAAjjxVVVX5j//4j5SUlGTr1q355je/eaiHBAAAbzq33357TjjhhB5tH/7wh/POd74zN9xwQ/7Lf/kvh2hkAAOLnegAR6Annngil19+eU444YQMGTIkY8aMye23354kefTRR3P22WcnST71qU+lpKSk+7iVK6+8srvu1faSkpI89dRTPfr/q7/6q4wZMyZvectbcuaZZ+Zv//Zve9x/9TkAAHgzO9Tr8t8P0JPk2GOPzdixY/PMM88cgBkDHJnsRAc4wvziF7/I5MmTc/LJJ+fmm2/OyJEjs3bt2nzhC1/I1q1bs2DBgtxzzz351Kc+lWuvvTYXXHBBkuSkk07Kjh078tJLL+Wv//qvs2nTpu4+TzzxxO6v/+7v/i7/43/8jyxZsiTHHnts/uIv/iIXX3xxfvnLX+bUU0896PMFAIDD0eG6Ln/++efzs5/9zC50gH4QogMcYRYuXJi3vvWt2bBhQ4YOHZokmTZtWnbs2JFvfOMb+cIXvpBx48YlSU477bRMnDixx/MVFRVJ0qv9Vf/5n/+ZRx55JG9961uTJGeddVbe/va357vf/W6uueaaAzUtAAAYUA7Xdfm8efPy0ksvZdGiRfs8R4A3C8e5ABxBXn755fzwhz/MxRdfnLe85S3ZtWtX9/WRj3wkL7/8cv7xH/9xn97jAx/4QPdCPXllcX/CCSfk6aef3tfhAwDAEeFwXZdfd911+c53vpNbbrkl1dXV+/T+AG8mQnSAI8i2bduya9eu3HbbbTnqqKN6XB/5yEeSJFu3bt2n93jb297Wq23IkCH5z//8z33qFwAAjhSH47r8+uuvz5//+Z/n61//ej73uc/t03sDvNk4zgXgCPIHf/AHKS0tzcyZMzNv3rw+a0aNGpUnn3zyII8MAADePA63dfn111+fxYsXZ/Hixfnyl798UN4T4EgiRAc4grzlLW/JBz7wgbS2tuY973lPysrK+qz79a9/nSR97lIZMmRI972jjz76wA0WAACOUIfTuvxrX/taFi9enGuvvTZf/epX97ofgDczITrAEWb58uV53/vel6lTp+azn/1sTjnllLzwwgv513/91zz00EP5h3/4h5x22mk5+uij853vfCdjxozJsccem7e//e15+9vfnne/+91JkhtvvDHTp09PaWnpay78i/z3//7f89JLL+WFF15IkvziF7/IX//1XydJPvKRj+Qtb3nL/p04AAAcRg6HdfnNN9+cr3zlK/nwhz+cCy64oNc57EUfWgpAT0J0gCPM2LFj87Of/Sxf+9rXcu2112bLli057rjjcvrpp3efv/iWt7wld999d66//vrU1NTkt7/9bb761a9m8eLFufzyy/PjH/84K1asyJIlS9LV1ZUnn3wyp5xySr/G8dnPfrbHhxp973vfy/e+970k2av+AABgIDkc1uUPPfRQkuTv//7v8/d///e97nd1de2XuQIc6Uq6/MQEAAAAAIA+DTrUAwAAAAAAgMOVEB0AAAAAAAoI0QEAAAAAoIAQHQAAAAAACgjRAQAAAACgwOBDPYD9Zc+ePfn1r3+dt771rSkpKTnUwwEAgEJdXV154YUX8va3vz2DBh1Z+1qsywEAGCje6Lr8iAnRf/3rX6eysvJQDwMAAN6wZ555JieddNKhHsZ+ZV0OAMBA83rr8iMmRH/rW9+a5JUJDx069BCPBgAAim3fvj2VlZXda9gjiXU5AAADxRtdlx8xIfqrvyo6dOhQi3UAAAaEI/G4E+tyAAAGmtdblx9ZBzACAAAAAMB+JEQHAAAAAIACQnQAAAAAAChwxJyJDgDAgbF79+789re/PdTDGFCOOuqolJaWHuphAABwhLE275/9tS4XogMA0Keurq50dnbmueeeO9RDGZCOO+64jBw58oj88FAAAA4ua/O9tz/W5UJ0AAD69Ooi/YQTTshb3vIWYfAb1NXVld/85jfZsmVLkuTEE088xCMCAGCgszbvv/25LheiAwDQy+7du7sX6W9729sO9XAGnKOPPjpJsmXLlpxwwgmOdgEAYK9Zm++9/bUu98GiAAD08uo5i295y1sO8UgGrle/d86sBABgX1ib75v9sS4XogMAUMivie493zsAAPYn68u9sz++b0J0AAAAAAAoIEQHAAAAAIACPlgUgCPCihUr8l//639NR0dH/vAP/zD19fWZOnVqn7UPPPBAVq5cmba2tuzYsSN/+Id/mMWLF+f888/vrmloaMinPvWpXs/+53/+Z8rLyw/YPGAg+Ebr1oP6fteMH35Q3w8A2Df9WZtv2LAhf/Znf5Z//ud/zm9+85tUVVXlM5/5TBYsWNCj7v777891112Xf/u3f8tpp52Wr3/967n44osPxnTgsGVdfvDYiQ7AgNfY2Jj58+dn0aJFaW1tzdSpUzN9+vS0t7f3Wb9u3bpMmzYtTU1NaWlpyQc+8IFceOGFaW1t7VE3dOjQdHR09LgE6HD4u/LKK1NSUpK5c+f2uldbW5uSkpJceeWVPdo3btyY0tLSfPjDH+71zFNPPZWSkpI+r3/8x388UNMAgAGpv2vzY445Jp/73Oeybt26PP7447n22mtz7bXXZtWqVd01mzZtyowZMzJz5sz8/Oc/z8yZM3PZZZflJz/5ycGaFrCXjpS1uRAdgAFv2bJlmT17dubMmZMxY8akvr4+lZWVWblyZZ/19fX1+dKXvpSzzz47p59+em644Yacfvrpeeihh3rUlZSUZOTIkT0uYGCorKzMfffdl//8z//sbnv55ZezZs2anHzyyb3q77777nz+85/Phg0bCv8n/5FHHun1D2vV1dUHbA4AMBD1d20+fvz4fOITn8gf/uEf5pRTTskVV1yR888/P+vXr++uqa+vz7Rp01JXV5fRo0enrq4uH/zgB1NfX3+QZgXsiyNhbS5EB2BA27lzZ1paWlJTU9OjvaamJhs3bnxDfezZsycvvPBCjj/++B7tL774YqqqqnLSSSflox/9aK+d6sDh66yzzsrJJ5+cBx54oLvtgQceSGVlZcaPH9+j9qWXXsp3v/vdfPazn81HP/rRNDQ09Nnn2972tl7/sHbUUUcdyGkAwICyP9bmra2t2bhxY84777zutk2bNvXq8/zzz3/DfQKH1pGwNheiAzCgbd26Nbt3705FRUWP9oqKinR2dr6hPm6++ea89NJLueyyy7rbRo8enYaGhvzgBz/ImjVrUl5enilTpuSJJ57Yr+MHDpxPfepTueeee7pf33333fn0pz/dq66xsTFnnHFGzjjjjFxxxRW555570tXVdTCHCgBHhH1Zm5900kkZMmRIJkyYkHnz5mXOnDnd9zo7O/dpvQ8cegN9bS5EB+CIUFJS0uN1V1dXr7a+rFmzJosXL05jY2NOOOGE7vaJEyfmiiuuyJlnnpmpU6fmu9/9bt71rnfltttu2+9jBw6MmTNnZsOGDXnqqafy9NNP58c//nGuuOKKXnV33XVXd/uHP/zhvPjii/nhD3/Yq27y5Mk59thje1y7d+8+4PMAgIFmb9bm69evz2OPPZY77rgj9fX1WbNmzT73CRw+BvraXIgOwIA2fPjwlJaW9tqFsmXLll67VX5fY2NjZs+ene9+97v50Ic+9Jq1gwYNytlnn20nOgwgw4cPzwUXXJBvfetbueeee3LBBRdk+PDhPWp++ctf5qc//Wk+/vGPJ0kGDx6cGTNm5O677+7VX2NjY9ra2npcpaWlB2UuHFwrVqzIqFGjUl5enurq6h7n8v6+DRs2ZMqUKXnb296Wo48+OqNHj84tt9zSq+7+++/P2LFjM2TIkIwdOzbf//73D+QUAA6JfVmbjxo1Ku9+97vzp3/6p1mwYEEWL17cfW/kyJF71Sdw+Bjoa/PBB6xnADgIysrKUl1dnebm5lx88cXd7c3NzbnooosKn1uzZk0+/elPZ82aNbngggte9326urrS1taWd7/73ftl3MDB8elPfzqf+9znkiS33357r/t33XVXdu3alXe84x3dbV1dXTnqqKPyH//xH/mDP/iD7vbKysq8853vPPCD5pBqbGzM/Pnzs2LFikyZMiV33nlnpk+fnl/84hd9fvDVMccck8997nN5z3vek2OOOSYbNmzIZz7zmRxzzDG56qqrkrxylu+MGTPyta99LRdffHG+//3v57LLLsuGDRty7rnnHuwpAhwwe7s2/31dXV3ZsWNH9+tJkyalubk5CxYs6G57+OGHM3ny5P0zcOCgGMhrcyE6AAPewoULM3PmzEyYMCGTJk3KqlWr0t7enrlz5yZJ6urqsnnz5tx7771JXgnQZ82aleXLl2fixIndu1qOPvroDBs2LEly/fXXZ+LEiTn99NOzffv23HrrrWlra+vzL3rg8PXhD384O3fuTPLKB5D9rl27duXee+/NzTff3OvDyi655JJ85zvf6V7k8+axbNmyzJ49u/ss3vr6+qxduzYrV67M0qVLe9WPHz++xwdinXLKKXnggQeyfv367hC9vr4+06ZNS11dXZJX/l760Y9+1OdxBQADXX/X5rfffntOPvnkjB49Oskrv+Fz00035fOf/3x3n1dffXXe//7358Ybb8xFF12UBx98MI888kg2bNhw8CcI7LWBvDYXogMw4M2YMSPbtm3LkiVL0tHRkXHjxqWpqSlVVVVJko6OjrS3t3fX33nnndm1a1fmzZuXefPmdbd/8pOf7P7k7+eeey5XXXVVOjs7M2zYsIwfPz7r1q3LOeecc1DnBuyb0tLSPP74491f/66//du/zX/8x39k9uzZ3f+A9qpLL700d911V4+F+rZt23r9Kvlxxx2X8vLyAzR6DradO3empaUl11xzTY/2mpqabNy48Q310dramo0bN+bP//zPu9s2bdrUY/dk8sr/ONbX1+/zmAEON/1dm+/Zsyd1dXV58sknM3jw4Jx22mn5xje+kc985jPdNZMnT859992Xa6+9Ntddd11OO+20NDY2+m0eGGAG8tq8pOtw+HjT/WD79u0ZNmxYnn/++QwdOvRQDwcAYEB7+eWX8+STT3afCz2QXHnllXnuuefyN3/zN33e/9jHPpbjjjsu27Zty549e/J3f/d3vWp+9rOfpbq6Oi0tLTn++OMzatSoPvtas2ZN95mNv++1vodH8tp1IM/t17/+dd7xjnfkxz/+cY8jAm644YZ861vfyi9/+cvCZ0866aQ8++yz2bVrVxYvXpzrrruu+15ZWVkaGhpy+eWXd7etXr06n/rUp3ocVwAA0Bdr831bm++Pdbmd6AAAHFFe/Y2SIkUL+N911lln5Xf3mhwh+054g0pKSnq87urq6tX2+9avX58XX3wx//iP/5hrrrkm73znO/OJT3xin/oEABjojpS1uRAdAAAgyfDhw1NaWtrrV4O3bNmSioqK13z21R1R7373u/Pv//7vWbx4cXeIPnLkyL3qEwCAw8OgQz0AAACAw0FZWVmqq6vT3Nzco725ubnH8S6vp6urq8cxLZMmTerV58MPP9yvPgEAOHSE6AAAMECtWLGi+2zH6urqrF+/vrB2w4YNmTJlSt72trfl6KOPzujRo3PLLbf0qrv//vszduzYDBkyJGPHjs33v//9AzmFw87ChQvzzW9+M3fffXcef/zxLFiwIO3t7Zk7d26SpK6uLrNmzequv/322/PQQw/liSeeyBNPPJF77rknN910U6644orumquvvjoPP/xwbrzxxvzzP/9zbrzxxjzyyCOZP3/+wZ4eAAB7wXEuAAAwADU2Nmb+/PlZsWJFpkyZkjvvvDPTp0/PL37xi5x88sm96o855ph87nOfy3ve854cc8wx2bBhQz7zmc/kmGOOyVVXXZUk2bRpU2bMmJGvfe1rufjii/P9738/l112WTZs2JBzzz33YE/xkJgxY0a2bduWJUuWpKOjI+PGjUtTU1OqqqqSJB0dHWlvb++u37NnT+rq6vLkk09m8ODBOe200/KNb3wjn/nMZ7prJk+enPvuuy/XXnttrrvuupx22mlpbGx803xPAQAGupKuI+RTkt7oJ6kCcPj5RuvWQz2Eg+aa8cMP9RDgDXmtT7DnjXmt7+H+WLuee+65Oeuss7Jy5crutjFjxuRjH/tYli5d+ob6+L/+r/8rxxxzTP7qr/4qySsB8vbt2/Pf//t/76758Ic/nD/4gz/ImjVr3lCf1uUAA5u1ORx+rM33zf5YlzvOBQAABpidO3empaUlNTU1PdpramqycePGN9RHa2trNm7cmPPOO6+7bdOmTb36PP/881+zzx07dmT79u09LgAAOJII0QEAYIDZunVrdu/enYqKih7tFRUV6ezsfM1nTzrppAwZMiQTJkzIvHnzMmfOnO57nZ2d/e5z6dKlGTZsWPdVWVm5FzMCAIDDlxAdAAAGqJKSkh6vu7q6erX9vvXr1+exxx7LHXfckfr6+l7HtPS3z7q6ujz//PPd1zPPPNPPWQAAwOHNB4sCAMAAM3z48JSWlvbaIb5ly5ZeO8l/36hRo5Ik7373u/Pv//7vWbx4cT7xiU8kSUaOHNnvPocMGZIhQ4bszTQAAGBAEKIDANA/q197p/N+d3nXwX2/AaCsrCzV1dVpbm7OxRdf3N3e3Nyciy666A3309XVlR07dnS/njRpUpqbm7NgwYLutocffjiTJ0/ePwMHAGD/sS4/aPbqOJcVK1Z0f5ppdXV11q9fX1j7wAMPZNq0aRkxYkSGDh2aSZMmZe3atT1qGhoaUlJS0ut6+eWX92Z4AAC8iV155ZUpKSnJ3Llze92rra1NSUlJrrzyyiSv7LL+zGc+k5NPPjlDhgzJyJEjc/7552fTpk3dz5xyyil9rlW/8Y1vHKwp9WnhwoX55je/mbvvvjuPP/54FixYkPb29u5519XVZdasWd31t99+ex566KE88cQTeeKJJ3LPPffkpptuyhVXXNFdc/XVV+fhhx/OjTfemH/+53/OjTfemEceeSTz588/2NMDAOAIcKSszfu9E72xsTHz58/PihUrMmXKlNx5552ZPn16fvGLX+Tkk0/uVb9u3bpMmzYtN9xwQ4477rjcc889ufDCC/OTn/wk48eP764bOnRofvnLX/Z4try8fC+mBADAm11lZWXuu+++3HLLLTn66KOTJC+//HLWrFnTY816ySWX5Le//W2+9a1v5dRTT82///u/54c//GH+9//+3z36W7JkSf70T/+0R9tb3/rWAz+R1zBjxoxs27YtS5YsSUdHR8aNG5empqZUVVUlSTo6OtLe3t5dv2fPntTV1eXJJ5/M4MGDc9ppp+Ub3/hGPvOZz3TXTJ48Offdd1+uvfbaXHfddTnttNPS2NiYc88996DPb299o3XroR7CQXPN+OGHeggAAK/rSFib9ztEX7ZsWWbPnp05c+YkSerr67N27dqsXLkyS5cu7VVfX1/f4/UNN9yQBx98MA899FCPEL2kpCQjR47s73AAAKCXs846K7/61a/ywAMP5E/+5E+SvPIbkpWVlTn11FOTJM8991w2bNiQRx99NOedd16SpKqqKuecc06v/t761rcelmvV2tra1NbW9nmvoaGhx+vPf/7z+fznP/+6fV566aW59NJL98fwAADgiFib9+s4l507d6alpSU1NTU92mtqarJx48Y31MeePXvywgsv5Pjjj+/R/uKLL6aqqionnXRSPvrRj6a1tfU1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rKzMggUL8vLLLx+gGQAcOn6GAgAADExCdOANaWxszPz587No0aK0trZm6tSpmT59etrb2/us37FjR0aMGJFFixblzDPP7LPmO9/5Tq655pp89atfzeOPP5677rorjY2NqaurO5BTATjo/AwFAAAYuITowBuybNmyzJ49O3PmzMmYMWNSX1+fysrKrFy5ss/6U045JcuXL8+sWbMybNiwPms2bdqUKVOm5PLLL88pp5ySmpqafOITn8hjjz12IKcCcND5GQoAADBwCdGB17Vz5860tLSkpqamR3tNTU02bty41/2+733vS0tLS376058mSX71q1+lqakpF1xwwT6NF+Bw4mcoAADAwDb4UA8AOPxt3bo1u3fvTkVFRY/2ioqKdHZ27nW/H//4x/Pss8/mfe97X7q6urJr16589rOfzTXXXLOvQwY4bPgZCgAAMLDZiQ68YSUlJT1ed3V19Wrrj0cffTRf//rXs2LFivzsZz/LAw88kL/927/N1772tX0dKsBhx89QAACAgclOdOB1DR8+PKWlpb12TG7ZsqXXzsr+uO666zJz5szMmTMnSfLud787L730Uq666qosWrQogwb5dz5g4PMzFAAAYGDzf1fA6yorK0t1dXWam5t7tDc3N2fy5Ml73e9vfvObXiFPaWlpurq60tXVtdf9AhxO/AwFAAAY2OxEB96QhQsXZubMmZkwYUImTZqUVatWpb29PXPnzk2S1NXVZfPmzbn33nu7n2lra0uSvPjii3n22WfT1taWsrKyjB07Nkly4YUXZtmyZRk/fnzOPffc/Ou//muuu+66/PEf/3FKS0sP+hwBDhQ/QwEAAAYuITrwhsyYMSPbtm3LkiVL0tHRkXHjxqWpqSlVVVVJko6OjrS3t/d4Zvz48d1ft7S0ZPXq1amqqspTTz2VJLn22mtTUlKSa6+9Nps3b86IESNy4YUX5utf//pBmxfAweBnKAAAwMBV0nWE/L7v9u3bM2zYsDz//PMZOnToQX//b7RuPejveahcM374oR4CcITxMxR4sznUa9cD6VDPzd8pHO78GeVw588ohzt/Rtmf3uja1ZnoAAAAAABQQIgOAAAAAAAFhOgAAAAAAFBAiA4AAAAAAAWE6AAAAAAAUGDwoR4AAMDh7hutWw/1EA6aa8YPP9RDAAAAOKwI0eFNQgAEAAAAAP3nOBcAAAAA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JUvS0dGRcePGpampKVVVVUmSjo6OtLe3d9ePGjUqTU1NWbBgQW6//fa8/e1vz6233ppLLrmku+a5557LVVddlc7OzgwbNizjx4/PunXrcs455xz0+QEAwOFCiA4AAANUbW1tamtr+7zX0NDQq+28887Lz372s8L+brnlltxyyy37a3gAAHBEcJwLAAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABQQogMAAAAAQAEhOgAAAAAAFBCiAwAAAABAASE6AAAAAAAUEKIDAAAAAEABIToAAAAAABT4/7F372FRlfv7x+/h7AnUQLRCJDMVLUUw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61bjp59+qr2CUa/88ccfRvfu3Y3g4GDj7bffNs6fP28YhmFs2bLFaNOmjfHAAw8Y6enp5vll5zBgCzIyMgxnZ2dj9uzZxrlz54yrr77a6Nmzp7Fv375K52/cuNHo0qWL0adPH+Obb76p5WoBXCx6c9QU+nLYMvpy2DP6ctvCSnRUK+P//xUsLy9Pw4YNU2RkpG666Sbt27dPQ4cO1T333KMXX3xRjRs3lnThL70ffPCB2rVrpw4dOli5etiLsr/I/vDDDyopKVH79u1VVFSkTZs2acyYMerRo4c2btwoSfrjjz/UoEEDzZw5UykpKfrkk0+sXD3qurKbD505c0b33HOPTp48qQkTJujOO++ssPLlP//5j7p06WLtkgGz/Px83XXXXerZs6dmzJghScrNzVVgYKDatGmjl19+udLrIn/11Vfy9fXlmouAjaE3R02jL4ctoy+HPaMvtz2E6KgWxp8+QrJ161YtWLBADg4OWrRokfnjT9u2bdNdd92le+65Ry+99JIaNWpkzZJh53755Re1bt1akrRnzx5df/31Onv2rLZu3ap//etfat++vTZt2mSev2PHDt1///3avXu3rr76amuVjTqu7HdhQUGBXF1dJUlt2rTRlVdeqdjY2HIN+5gxY9SxY0c9++yzuv76661cOfB/Dhw4YP4Yftm1Fo8fP65u3bpVaNjLwhMAtoXeHLWJvhy2iL4cdQF9uW3hp4tqdejQIXXs2FEpKSnatGmTfv75Z/NjN998s95991299957GjZsmM6ePWvFSmHvzp49q2uvvVZXXnmlgoOD9cUXX6hRo0bq06eP5s6dq++++04DBgwwz//jjz/k5OSkhg0bWrFq1FWHDh3SF198IZPJpKKiInOjvmjRIp06dUrnzp3T7NmztWnTJhUUFKhPnz5auHChfv75Z11xxRVWrh648B+aJSUlkmRu1EtKSuTs7Kzi4mJ5eXnp66+/VmZmpkaPHq0DBw5IEo06YOPozVEb6MthS+jLYe/oy20XP2FUC5PJpPfee0/t27fX+fPntXfvXrm7u2vu3Lk6fPiwed7NN9+spKQkffnllzp16pQVK4a9a9mypa677jr17dtXI0aM0E033aQvv/xSjRo1Ut++fc0N+8CBAyVJ4eHh2r17t5o3b27lylEXzZkzR8HBwfrss8/Md0ifPXu2pkyZog8++EDp6elq3ry5Zs2apffff1/nz59XRESEdu3apSuvvNLK1QMXODo6KjMzUwcPHtRvv/0mR0dHSZKTk5OKiorMDfvRo0cVGRmpb7/91soVA7CE3hy1ib4ctoS+HHUBfbmNss6l2FHXHD161Jg5c6bx4osvmse++eYbo3HjxsagQYMq3Cjm3LlztV0i7Nifb1b055sSbdmyxfDx8TE2bNhgREVFGQ0aNDC+/PJLwzAM48yZM8bGjRuN5s2bG/fdd1+F5wLVITMz0zCMC+foAw88YDRq1Mg4dOiQsWjRIqNZs2bG5s2bzXPPnTtnREREGG3btjU2btxoGAbnJKxr3rx5xgcffGD+ft26dUaLFi2Ma665xmjRooWxadOmcr9/CwsLDcMwjJycHKNTp07G4cOHa7tkABeJ3hw1hb4ctoq+HPaMvtw+EKLjsu3du9fo1KmTcd111xlbtmwxDOP//kHv3bvXaNy4sXHfffcZhw4dsmaZsFNlbxQ//PCDsXv3bvPd1A3DME6ePGlERUUZr776qpGbm2vcc8895Rr206dPG5s2beLcQ404f/680aNHD+Oaa64xSktLjZKSEuO+++4zHBwcDDc3N2P37t3mucXFxYZhXGjYKwsvAGu46667jEaNGhkff/yxkZmZafj5+Rkvvvii8cknnxjR0dGGi4uLkZiYaBQVFZmfU/b+/ucmHoBtoTdHTaEvh62iL4e9oy+3D4TouGw7d+407r33XsPNzc1YvXq1YRgX/hGX/YP+5ptvDJPJZERFRZX7Bw9crF9++cUwmUyGyWQynnjiCWP27Nnmx1544QXDz8/PKCgoMH799Vdj8ODBhru7u5GammoYBisKUHNKS0uNHTt2GJ06dTICAwON0tJSo6ioyBgzZozh4uJi/o/GsnOQ33+wNSUlJcbw4cON5s2bGytXrjSefPLJco8/9dRThouLi7FixYoK5y+/WwHbRW+OmkRfDltEXw57R19uHwjRUS12795t3HXXXcbVV19t/phUaWmpuVnfv3+/cfDgQWuWCDu2b98+IzQ01DCZTMbUqVONoKAgo1evXsZzzz1nHD161LjrrruMV1991TAMw8jKyjIiIiKMVq1aGX/88QdvKKhRJSUlRmpqqnHdddeZG/bi4mJjyJAhRqNGjYzPPvvMPA+wFf/7e3Ho0KGGyWQyQkNDjbNnz5Z7bPz48UajRo2MpUuX8h+cgB2hN0dNoS+HraIvhz2iL7cvJsMwDGtflx32wzAMmUwmHThwQCdOnNCpU6fMd1rPyMjQ7NmztX//fs2fP199+/aVYRgqLi4239ADuBilpaVycHBQSUmJHB0dVVJSogMHDujRRx9VcXGxPvzwQ7355pvasmWLPv30UxUVFalPnz5at26dTCaTfvnlF5lMJl111VXWPhTUMTk5OcrMzFRwcLB5rKioSOnp6Ro6dKg8PDz01VdfyTAMDR06VJs3b9Y777yjm266yYpVA+WVvZefPHnSfFO3xx9/XK+99po2bNig22+/vdz8sWPH6q233tL3338vDw8Pa5QMwAJ6c9Q0+nLYKvpy1AX05faFEB0Xpbi4WI6OjjKZTHr77bf1xBNPqGHDhsrLy5Ofn5/mzZunW2+9VV9//bXmzp2rb7/9VjNmzNAdd9xh7dJhZ8oa9Z9++kkvv/yyhg0bps6dO0uS9u3bpyFDhqhp06bavHmzmjRporffflsbNmxQRESEHnzwQStXj7rsyJEjCggI0MmTJ3XTTTcpJCREt912m7p3764mTZroyy+/1KOPPirDMJSenq7S0lLdeeed2rt3rw4dOqQGDRpY+xAAc6OenJys//73v4qMjNTAgQNVUlKihx56SJs2bdK6det06623lntebm6uWrRoYaWqAfwvenPUBvpy2Cr6ctQF9OX2x8HaBcC2rV69WpLk5OQkk8mkL774QqNGjdKsWbP00Ucf6eDBg2ratKkef/xx7dixQ926ddMTTzyhq6++WjNmzNC5c+fE32lwscoa9W+++UZ9+/bVt99+qx07dpgf79y5s958803l5+erV69eOn36tAYPHqylS5fSqKPGlZaWysfHR9ddd53OnDmjY8eOqX///urdu7eioqJ0+PBhTZw4UefOnVPfvn3l6Oio9957T7t376ZRh80wmUx65513dM8996hbt25q06aNJMnR0VErVqzQgAEDdO+99+qTTz4p9zwadcA20JujttCXw5bRl6MuoC+3P6xEh0Xx8fGaPXu2fvrpJ/n6+kqSli9friVLlujTTz9VgwYN5OBw4e8wYWFhKigo0BdffCFJ+uqrr9SqVSs+tocq++6779S7d289/PDDmjx5sho1alTuccMwdPDgQQ0ZMkQODg767LPP1KRJE3OjD9SkH374QePHj1dpaani4uLUqlUr7dq1Sy+++KKKior0zTffqG3bttq/f78GDRqkdevWWbtkoJwjR45owIABGjlypJ544gnzeNnv0NLSUj388MN64403tG3bNvXu3duK1QL4M3pz1Db6ctgy+nLYO/py+8M7Gyr13Xff6b///a8+/PBD+fr66tChQ5KkU6dO6eTJk2rUqJEcHBx07tw5SdJrr72m77//Xtu3b5ckBQUF0aSjSsqu0TlnzhxFRERo1qxZ5kb99OnTyszMVFpamk6cOCF/f3+99dZbcnR0VOfOnXXmzBkaddSKa6+9VrNmzdL58+c1efJk/frrr7r//vu1c+dObd68WUuXLtXAgQMVEBCgSZMmWbtcoMKK099++00nT55UUFBQuTllv0MdHBy0YsUKjRw5Ut7e3rVaKwDL6M1Rm+jLYQ/oy2Fv6MvtH+9uqFSzZs3UqlUrff7551q1apUGDx6s7Oxs3X333fr99981efJkSVLDhg0lSX/88Yc8PT3VtGlTK1YNe1RaWirpwrU9nZycdPDgQV177bUymUySpPfff18xMTG64YYbFBwcrAceeEA7d+5Ux44dlZiYKB8fH+Xm5lrzEFDPtG/fXosWLZKDg4MmT56sTz/9VJLUtGlTRUVF6dlnn9Xu3bsVEBBg5UpRX5X9XpVk/l36ww8/SLrwu/bPj5eUlJjn7Nq1Sxs2bJAkvfLKK2rfvn1tlQzgb9CbozbQl8Pe0JfD1tGX1y2E6KiUu7u77rrrLq1du1ZRUVEaO3asWrVqJW9vb02aNElr165VfHy8JOnEiRNav369TCYT12ZClfz5WotjxozRqVOn1L59e7399ttKTU3VpEmTNHbsWBUWFurVV1/Vli1b9Msvv+idd96RJHXp0kUff/yxrrnmGuseCOqddu3aadGiRTKZTJo1a5Z27dpV7nEnJycrVQZcWLVy6NAhRUdHS5LefvttDRw4UD/++KMCAgJ0xRVXaNKkSSoqKpKjo6P5eRs2bNAHH3xgXskKwHbQm6Om0ZfDXtGXw5bRl9ct/DZBBYZhyM3NTX5+fjp48KDatm2rU6dO6fz582rUqJHuu+8+mUwmPfvss3r99dfVvHlznThxQu+//75atmxp7fJhJ8oa9T179igwMFBPP/20PDw8NHz4cP3yyy8aNGiQTCaTnnvuOd10003ma38GBQXpyy+/VFFRkZydneXi4mLlI0F91a5dO73wwguKjY3Vv/71Ly1YsEDBwcHWLguQJP300096+eWXdejQIW3dulWJiYlq27atJCkxMVEDBw5Unz59NHHiREnSRx99pOXLl+uzzz4zr2QFYBvozVHT6Mth7+jLYcvoy+sObiyKcgzDkMlkkmEY2rJli44cOaKDBw9qx44d6t+/v8aPHy9XV1edP39eJ0+e1IcffqgrrrhCXbt2NTdTwN8pa9QPHDigwMBAPfXUU5o6dar58fz8fGVnZ8vLy0vNmzc3jxcXF2v48OHy9vbW3Llzy/2lFrCWb7/9VpMnT9a8efPUunVra5cDmD311FOaO3euevXqZb4uctn7/I8//qgHHnhAeXl5Ki0tVYsWLfTyyy+ra9eu1i0aQDn05qhp9OWoS+jLYavoy+sGQnSYlf0D/uSTT/TZZ5/pkUcekbe3t06fPq34+Hh9+eWXuuOOO/TUU0+xygCXrKxR37dvn2655RZ5eXnpwIEDkqTCwkKL51ZRUZGmTZum119/XR9//DHXBINN+atzF7CWl156Sd9//71WrlypO++8UytXrpT0f9e6laSsrCwVFRWpefPmatasmTXLBfA/6M1R0+jLURfRl8MW0ZfXDVwTHZL+r0lft26d7r77bpWWlionJ0eS1KRJE82YMUNBQUF6//33NW/ePBUWFlq5YtijP39UtEePHurcubNOnTqlcePGSZJcXFxUUlJS4XkrVqzQY489puXLl2vTpk006rA5NOqwRY8//rgWLlyoN954Qxs3btSwYcMk/d+1Qb/++mu1bt1abdu2pVEHbAy9OWoafTnqKvpy2CL68rqBEB2SLtwlePfu3Xrsscc0b948Pf300+rSpYukCzcnatKkiWbOnKng4GCtXLlSL7zwgpUrhj1ycHDQV199pe7du2v8+PHasmWLpkyZotWrV5sbdkdHx3IN+9dff62MjAyVlpZq27Zt3FkdACpR9sHCr7/+WmvXrtWrr76qM2fOSJLuuOMOrVq1Su+++66ioqKUm5urp59+WiNGjNDx48etWTYAC+jNUdPoywGgZtCX111czgVmL7zwgtavX69t27bp7Nmz2rJli1auXKkff/xRY8eO1ahRo5Sfn6+ZM2dq9OjRatOmjbVLhh3avn271q1bp4ULF0qSTp06paSkJMXHx2vo0KHm8ZKSEvO1FU+cOCE3Nzc1atTIanUDgK0qW7G6fv16PfHEE/L09FRpaal+++03vffee+ratasMw1BKSooiIyPl5eWlU6dOKTk5WYGBgdYuH4AF9OaoafTlAFC96MvrNkJ0mK1Zs0bx8fF6+OGHtXPnTrm6usrFxUXXXnut5syZo4yMDN1www3mXwrA5So7l/Lz87V27doKDXtRUZGcnZ2tXCUA2Jayj+D/2aeffqqBAwdq3rx5GjlypA4cOKDOnTvL19dXb7zxhnr16iVJys3N1eeff65u3brp6quvtkb5AC4SvTlqE305AFQdfXn9QoheT5U1SX/88YecnZ3l5OSkzMxMLVq0SB999JF69uypqKgo9ezZU4cOHdIDDzyg//73v7ruuuusXTrqqD837FFRUZo/f761SwIAm1PWqB85ckSbN2/W2bNn1aZNG/3666/69ddfNXnyZB05ckS9evVSv379lJ2drbS0NK1fv17BwcHWLh+ABfTmsCX05QDw9+jL6x8naxeA2lfWpG/atEmvv/66jh8/rujoaA0YMEDz5s3T77//rqZNm5rnr1ixQufOnSs3BlQ3d3d33X///XJwcNCjjz4qV1dXzZo1y9plAYDNKGvU9+7dq4EDB6pZs2b68ccf5eTkpD59+mjBggXKz8/XkCFDdPvtt2vp0qX6/PPPFRoaqn79+mnz5s007IANojeHraEvB4C/Rl9ePxGi10Mmk0k7duzQkCFDNGLECBUWFiomJkZpaWl67LHHdO2110qStm3bpjfffFNr167Vxx9/rBYtWli5ctR17u7uuu++++Ts7KyQkBBrlwMANuPPjXpISIj++c9/6qmnntJ3332nZcuW6cMPP9Tvv/+uI0eOqLi4WP/85z8lSc7OzhoyZIhcXFzUrFkzKx8FgMrQm8MW0ZcDQOXoy+svQvR66NixY9q6datmzZplvvP6Sy+9pBdffFGlpaWKjo6Wt7e3tm7dquzsbG3fvl2dO3e2ctWoLzw8PDRs2DCu7QkAf1L2UdE+ffqof//+mj17tiQpODhYOTk5euutt3T27Fnl5ORo7969atKkiQzD0MaNG1VSUqLly5dzLVvARtGbw1bRlwNARfTl9Rchej3z/fffKzw8XIZh6KmnnjKPP/7445KkRYsWycHBQbGxsYqPj1dBQYE8PDysVS7qKRp1AKiopKREfn5+Kigo0M6dO803JWrRooUcHR3l7OysgQMHKigoSB07dtT111+vgwcPavv27TTqgI2iN4etoy8HgIroy+snh7+fgrrkuuuu07Bhw5Sbm6u0tDTl5uaaH3v88cc1btw4JSYm6sUXX5STkxNNOgAANqJNmzZatWqVCgsL9cwzz+jgwYM6ffq0Bg0apEceeUQBAQEymUz68MMPNW3aNN1///366quv1LVrV2uXDsACenMAAOwPfXn9ZDIMw7B2Eah9U6ZM0fLlyzVu3DgNHz683DUVX331Vd1yyy1q27atFSsEAACVOXTokMaNG6dz585p7969Gj58uBYsWCDpwqoYR0dHK1cIoKrozQEAsD/05fULIXodZhiGTCaT9u/fr2PHjsnBwUGBgYFq2rSpJGnixIn673//q7Fjx+rhhx+Wl5eXdQsGAAAX5dChQxo9erR+/PFHrVy5Ur1795b0f+/9AGwPvTkAAHUPfXn9QYheR5X9Y92wYYPGjBmjK6+8Ut9//70GDRqkBx98UP369ZN0oVlPSkpSVFSUxo4dK09PTytXDgAALsYPP/ygf/7znzIMQ5MnT1bPnj2tXRIAC+jNAQCou+jL6weuiV5HmUwmbdmyRY888oimTZumr7/+WqtXr9Zbb72lhQsXatOmTZKkmTNnasCAAVq3bh1/IQMAwI5ce+21euGFF+Ts7Kx///vf+vzzz61dEgAL6M0BAKi76MvrB1ai1yF//qjI+fPnNWHCBLm4uGjOnDk6fPiw+vbtq44dOyorK0vu7u6aOHGiIiIiJEnHjx/nI6MAANihb7/9VpMnT9a8efPUunVra5cD4P+jNwcAoH6hL6/bCNHrkLKbFuzdu1ctWrTQzz//LA8PD7Vq1Up9+vRRly5dtHz5ciUnJ2vIkCHq1q2bxo8frwEDBnCtJgAA7FhhYaFcXFysXQaAP6E3BwCg/qEvr7u4nIsdKy0tlSTl5ubq9OnTcnR01HvvvaeuXbvq8OHD6tSpkzp06KBPPvlEDg4OmjZtmvm5/v7+at68ubp27SpJNOkAANgxGnXA+ujNAQAAfXndRYhup0pLS+Xg4KD09HT16dNHJ0+eVH5+vn788Uc9//zzCgkJUePGjSVJZ8+eVX5+vrKzsyVJqampuv3227Vy5UpdffXV1jwMAAAAwO7RmwMAANRtTtYuAFVX1qRnZGSoZ8+eGjt2rIqKiuTl5aVrrrlGzz77bLn51113nRwcHBQdHS1nZ2ft27dPO3fulLu7u5WOAAAAAKgb6M0BAADqPlai25myJv3bb79V79699fTTT2vOnDlq1KiRHnjgAX333Xc6ceKEpAvXYZSk7t27a/Hixerfv7969uyp3bt364YbbrDmYQAAAAB2j94cAACgfmAluh0pa9L37t2rm266SWfPnlWHDh0kSa1atTKvcomJiZG/v7969eplvqHRzTffrJtvvtmK1QMAAAB1B705AABA/UGIbkf+/DHRyMhINWnSRHFxcTp79qweeOABXXnllZo1a5aKi4t1++2366OPPlJoaKi5WQcAAABQPejNAQAA6g9CdDvx1ltvqWHDhrrzzjs1ceJEPfvss9q3b5/Onz+vZ599ViaTSUOHDpW3t7fmzp0rwzDUv39/vfPOO7rpppusXT4AAABQZ9CbAwAA1C8mwzAMaxeBv3b06FHdf//9WrRokb7//nsNGTLE/Ng333yjF198Udu3b9fkyZM1dOhQSdKvv/6qxx57TF999ZUOHTqkBg0aWKt8AAAAoM6gNwcAAKh/CNHtxLlz59SwYUPt379fktSpUyfzY/v27dOiRYsqNOu5ubkqLi7WlVdeaZWaAQAAgLqI3hwAAKB+IUS3I/n5+erdu7c6d+6siRMnyt/f3/xYWbO+a9cuPfnkkxoxYoQVKwUAAADqNnpzAACA+sPB2gXg4rm7u+vVV1/VoUOHtGDBAvPKF0nq3LmznnjiCd1www1aunSp8vPzxd9HAAAAgJpBbw4AAFB/sBLdDqWnp2vUqFHq1q2bYmJiyn189ODBg2rWrJlatmxpxQoBAACA+oHeHAAAoO4jRLdTf27Wn3zyyXIfHwUAAABQe+jNAQAA6jZCdDuWnp6u0aNH65prrtGUKVPUoUMHa5cEAAAA1Ev05gAAAHUX10S3YwEBAXrxxReVnZ0tDw8Pa5cDAAAA1Fv05gAAAHUXK9HrgPPnz8vNzc3aZQAAAAD1Hr05AABA3UOIDgAAAAAAAACABVzOBQAAAAAAAAAACwjRAQAAAAAAAACwgBAdAAAAAAAAAAALCNEBAAAAAAAAALCAEB0AAAAAAAAAAAsI0QEAAAAAAAAAsIAQHQAAAAAAAAAACwjRAQAAAAAAAACwgBAdAAAAAAAAAAALCNEBAAAAAAAAALCAEB0AAAAAAAAAAAsI0QEAAAAAAAAAsIAQHQAAAAAAAAAACwjRAQAAAAAAAACwgBAdAAAAAAAAAAALCNEBoJ44duyYpk6dqoyMjAqPJScna+rUqTXyuvv371d0dLRCQkLUqFEjmUwmbdu2rUZeCwAAALB11urLX331Vd19991q06aNGjRooGuvvVZjxoxRdnZ2jbweANQlhOgAUE8cO3ZM06ZNs9isT5s2rUZe96uvvtI777yj5s2bq0+fPjXyGgAAAIC9sFZfPmXKFDVu3FgzZ87Uhx9+qPHjx2vTpk0KDAzUr7/+WiOvCQB1hZO1CwAA1G1RUVEaPny4JOntt9/We++9Z+WKAAAAgPonPT1dLVq0MH9/0003qVu3burevbteeeUVTZo0yYrVAYBtYyU6ANQRhw4d0tChQ9WiRQu5urqqY8eOeumllyRJ27ZtU/fu3SVJDz/8sEwmk0wmk6ZOnaqHHnrIPK9s3GQyKTMz0zw2duxYvf7662rfvr0aNGigoKAgff755zIMQ3PnzpWfn58aN26sW2+9VT/88EO5uhwceKsBAABA/WGrffmfA/QygYGBcnR01JEjR2rwJwIA9o+V6ABQBxw4cEChoaFq3bq15s2bp5YtW2rz5s164oknlJeXpyeffFKvv/66Hn74YU2aNEn9+/eXJF199dUqKCjQ2bNn9fbbbys1NdW8z1atWpm/3rRpk9LT0zV79myZTCY99dRT6t+/v4YPH66ffvpJL774ok6dOqXY2Fjde++9ysjIkMlkqvWfAwAAAGBN9taXf/rppyopKVGnTp1q7ocCAHUAIToA1AGxsbFq0qSJdu7cKXd3d0lS3759VVBQoNmzZ+uJJ55Q586dJUlt27ZVcHBwued7e3tLUoXxMgUFBfroo4/UqFEjSRdWwdx999365JNP9PXXX5sb8+PHjysmJkb79u3T9ddfXyPHCgAAANgqe+rLT58+rejoaPn4+GjEiBGXf/AAUIfxGXsAsHPnz5/X1q1bNWjQIDVs2FDFxcXm7Y477tD58+f1+eefX9Zr3HLLLeZGXZI6duwoSYqIiCi3sqVs/Oeff76s1wMAAADsjT315efPn9c999yjn3/+WW+99ZYaN258WXUBQF1HiA4Adu7EiRMqLi7WokWL5OzsXG674447JEl5eXmX9RrNmzcv972Li8tfjp8/f/6yXg8AAACwN/bSlxcUFGjQoEHauXOn3n33XfXo0eOyagKA+oDLuQCAnWvWrJkcHR0VFRWlxx9/vNI5fn5+Onz4cC1XBgAAANQf9tCXFxQUmC//snHjRvXp08dqtQCAPSFEBwA717BhQ91yyy1KT0/XDTfcYF518r+OHTsmSfrjjz8qPObq6mp+rEGDBjVXLAAAAFBH2XpfXrYC/eOPP9b69evVr1+/at0/ANRlhOgAUAcsXLhQvXr1UlhYmMaMGaM2bdro9OnT+uGHH/Tee+/p448/Vtu2bdWgQQOtWrVKHTt2VOPGjXXllVfqyiuvNN9s6LnnnlNERIQcHR3/svGvinPnzik5OVmSzNeA/PTTT5WXl6dGjRopIiLisl8DAAAAsAW23JcPHjxYH3zwgeLj43XFFVeUuz67u7u7/P39L/s1AKCuIkQHgDrA399fX3/9tZ555hlNmjRJubm5atq0qdq1a2e+/mLDhg312muvadq0aQoPD1dRUZGmTJmiqVOnaujQofrss8+0ePFiTZ8+XYZh6PDhw2rTps1l15abm6v77ruv3NjUqVMlSb6+vsrMzLzs1wAAAABsgS335Zs2bZIkzZgxQzNmzCj32E033aRt27Zd9msAQF1lMgzDsHYRAAAAAAAAAADYIgdrFwAAAAAAAAAAgK0iRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwAAAAAAAADAAkJ0AAAAAAAAAAAsIEQHAAAAAAAAAMACJ2sXUF1KS0t17NgxNWnSRCaTydrlAAAAABYZhqHTp0/ryiuvlIND3VrXQl8OAAAAe3GxfXmdCdGPHTsmHx8fa5cBAAAAXLQjR47o6quvtnYZ1Yq+HAAAAPbm7/ryOhOiN2nSRNKFA3Z3d7dyNQAAAIBl+fn58vHxMfewdQl9OQAAAOzFxfbldSZEL/uoqLu7O806AAAA7EJdvNwJfTkAAADszd/15XXrAowAAAAAAAAAAFQjQnQAAAAAAAAAACwgRAcAAAAAAAAAwII6c010AAAA1IySkhIVFRVZuwy74uzsLEdHR2uXAQAAgDqG3rxqqqsvJ0QHAABApQzDUE5Ojn7//Xdrl2KXmjZtqpYtW9bJm4cCAACgdtGbX7rq6MsJ0QEAAFCpsia9RYsWatiwIWHwRTIMQ+fOnVNubq4kqVWrVlauCAAAAPaO3rzqqrMvJ0QHAABABSUlJeYm/YorrrB2OXanQYMGkqTc3Fy1aNGCS7sAAADgktGbX7rq6su5sSgAAAAqKLvOYsOGDa1cif0q+9lxzUoAAABcDnrzy1MdfTkhOgAAACziY6KXjp8dAAAAqhP95aWpjp8bIToAAAAAAAAAABYQogMA6oTFixfLz89Pbm5uCgwM1I4dOyzOXb9+vfr27SsvLy+5u7srJCREmzdvLjcnMTFRJpOpwnb+/PmaPhQAgJVV93vKK6+8orCwMDVr1kzNmjXTbbfdpi+++KKmDwMAAADVhBuLAgDsXlJSkmJiYrR48WL17NlTS5cuVUREhA4cOKDWrVtXmL99+3b17dtXM2fOVNOmTfX666/rzjvv1O7duxUQEGCe5+7uru+++67cc93c3Gr8eABbNzs9r1Zfb0KAZ5XmP/TQQ1qxYoUee+wxvfzyy+Uei46O1pIlSzR8+HAlJiaax3ft2qWwsDD17dtXH374YbnnZGZmys/Pr9LXSk1NVXBwcJXqg22rifeUbdu26R//+IdCQ0Pl5uamOXPmKDw8XPv379dVV11V24cIAADqCFvvy6W605uzEh0AYPfmz5+vkSNHatSoUerYsaMSEhLk4+OjJUuWVDo/ISFB48ePV/fu3dWuXTvNnDlT7dq103vvvVdunslkUsuWLcttAOyDj4+P1q5dqz/++MM8dv78ea1Zs6bSIPS1117TP//5T+3cuVNZWVmV7nPLli3Kzs4utwUGBtbYMcA6auI9ZdWqVYqOjlbXrl3VoUMHvfLKKyotLdXWrVtr67AAAACspi705pcUovOReQCArSgsLFRaWprCw8PLjYeHh2vXrl0XtY/S0lKdPn1azZs3Lzd+5swZ+fr66uqrr9aAAQOUnp5ebXUDqFndunVT69attX79evPY+vXr5ePjU+4TJ5J09uxZvfnmmxozZowGDBhQbhXMn11xxRUV/rDm7Oxck4eBWlaT7yl/du7cORUVFf3lHAAAgLqiLvTmVQ7Ryz7eGB8fr/T0dIWFhSkiIsLiXwXKPt6YnJystLQ03XLLLbrzzjsrBBHu7u4V/nrAR+YBAH8nLy9PJSUl8vb2Ljfu7e2tnJyci9rHvHnzdPbsWQ0ZMsQ81qFDByUmJurdd9/VmjVr5Obmpp49e+rQoUPVWj+AmvPwww/r9ddfN3//2muvacSIERXmJSUlqX379mrfvr0efPBBvf766zIMozZLhY2oqfeU/zVhwgRdddVVuu222y6rXgAAAHth7715lUN0PjIPALBFJpOp3PeGYVQYq8yaNWs0depUJSUlqUWLFubx4OBgPfjgg+rSpYvCwsL05ptv6rrrrtOiRYuqvXYANSMqKko7d+5UZmamfv75Z3322Wd68MEHK8xbvny5efz222/XmTNnKr3MRmhoqBo3blxuKykpqfHjQO2r7veUP5szZ47WrFmj9evXs2gIAADUG/bem1fpxqJlH2+cMGFCufHq/Mh8SUmJunbtqmeeeabCcv4/KygoUEFBgfn7/Pz8KhwJAKCu8PT0lKOjY4UVgrm5uRVWEv6vpKQkjRw5Um+99dbfrgZ0cHBQ9+7dWYkO2BFPT0/1799fK1askGEY6t+/vzw9y98M6bvvvtMXX3xh/mipk5OTIiMj9dprr1X4vZCUlKSOHTuWG3N0dKzZg0Ctqun3lOeff14zZ87Uli1bdMMNN1Rb3QAAALbO3nvzKoXoNf2R+euvv175+flauHChevbsqT179qhdu3aV7mfWrFmaNm1aVcoHANRBLi4uCgwMVEpKigYNGmQeT0lJ0cCBAy0+b82aNRoxYoTWrFmj/v37/+3rGIahjIwMXX/99dVSN4DaMWLECI0dO1aS9NJLL1V4fPny5SouLtZVV11lHjMMQ87Ozvrtt9/UrFkz87iPj4+uvfbami8aVlOT7ylz587Vs88+q82bNysoKKjaawcAALB19tybVylEL3O5H2/cuHFjhY/MBwcHm7/v2bOnunXrpkWLFumFF16odF9xcXGKjY01f5+fny8fH5+qHgoAoA6IjY1VVFSUgoKCFBISomXLlikrK0ujR4+WdOE94+jRo1q5cqWkC+9Hw4YN08KFCxUcHGz+Q3CDBg3k4eEhSZo2bZqCg4PVrl075efn64UXXlBGRkalb/QAbNftt9+uwsJCSVK/fv3KPVZcXKyVK1dq3rx5FW4kee+992rVqlXmJh/1R028p8yZM0eTJ0/W6tWr1aZNG/Ocso8eAwAA1Af23JtXKUS3pY/Mu7q6ytXV9eKLBwDUWZGRkTpx4oSmT5+u7Oxsde7cWcnJyfL19ZUkZWdnl7sB9tKlS1VcXKzHH39cjz/+uHl8+PDh5jt///7773r00UeVk5MjDw8PBQQEaPv27brxxhtr9dgAXB5HR0cdPHjQ/PWfbdq0Sb/99ptGjhxpDjvLDB48WMuXLy/XqJ84caJCH9y0aVOua13H1MR7yuLFi1VYWKjBgweXe60pU6Zo6tSpNX5MAAAAtsCee3OTUcXbm/bo0UOBgYFavHixeczf318DBw7UrFmzKn3Onz/eePfdd//taxiGoRtvvFHXX3+9XnvttYuqKz8/Xx4eHjp16pTc3d0v6jkAAACo3Pnz53X48GH5+fnZXUj80EMP6ffff9c777xT6eN33323mjZtqhMnTqi0tFTvv/9+hTlff/21AgMDlZaWpubNm8vPz6/Sfa1Zs0b3339/pY/91c+wLveudfnYAAAArIHe/PJ68+roy6t8ORc+Mg8AAABbVrb61xJLDfyfdevWTX9ea1LFdScAAAAAVHd68yqH6HxkHgAAAAAAAABQX1T5ci62io+NAgAAVB97/sioreByLnXv2AAAAKyB3vzyVEdf7lDTRQIAAAAAAAAAYK8I0QEAAAAAAAAAsIAQHQAAAAAAAAAAC6p8Y1EAAKrb7PQ8a5dQayYEeFq7BACo03hPAQAAQHVjJToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgATcWBQAAQNWsNtXu6w01qjT9oYce0ooVK/TYY4/p5ZdfLvdYdHS0lixZouHDhysxMVG5ubmaPHmyPvjgA/36669q1qyZunTpoqlTpyokJESS1KZNG/38888VXmfWrFmaMGHCpR8XAAAAcDlsvC+X6k5vTogOAACAOsfHx0dr167VggUL1KBBA0nS+fPntWbNGrVu3do8795771VRUZFWrFiha665Rr/++qu2bt2qkydPltvf9OnT9cgjj5Qba9KkSc0fCAAAAGDn6kJvzuVcAAAAUOd069ZNrVu31vr1681j69evl4+PjwICAiRJv//+u3bu3KnnnntOt9xyi3x9fXXjjTcqLi5O/fv3L7e/Jk2aqGXLluW2Ro0a1eoxAQBgLxYvXiw/Pz+5ubkpMDBQO3bssDh3/fr16tu3r7y8vOTu7q6QkBBt3ry53Jz9+/fr3nvvVZs2bWQymZSQkFDDRwCgOtWF3pwQHQAAAHXSww8/rNdff938/WuvvaYRI0aYv2/cuLEaN26sd955RwUFBdYoEQCAOicpKUkxMTGKj49Xenq6wsLCFBERoaysrErnb9++XX379lVycrLS0tJ0yy236M4771R6erp5zrlz53TNNddo9uzZatmyZW0dCoBqZO+9OSE6AAAA6qSoqCjt3LlTmZmZ+vnnn/XZZ5/pwQcfND/u5OSkxMRErVixQk2bNlXPnj01ceJE7d27t8K+nnrqKXNjX7Zt27atFo8GAAD7MH/+fI0cOVKjRo1Sx44dlZCQIB8fHy1ZsqTS+QkJCRo/fry6d++udu3aaebMmWrXrp3ee+8985zu3btr7ty5uv/+++Xq6lpbhwKgGtl7b8410QEAAFAneXp6qn///lqxYoUMw1D//v3l6elZbs69996r/v37a8eOHUpNTdWHH36oOXPm6NVXX9VDDz1knvef//yn3PeSdNVVV9XCUQAAYD8KCwuVlpZW4eZ+4eHh2rVr10Xto7S0VKdPn1bz5s1rokQAVmLvvTkhOgAAAOqsESNGaOzYsZKkl156qdI5bm5u6tu3r/r27aunn35ao0aN0pQpU8o15p6enrr22mtro2QAAOxWXl6eSkpK5O3tXW7c29tbOTk5F7WPefPm6ezZsxoyZEhNlAjAiuy5N+dyLgAAAKizbr/9dhUWFqqwsFD9+vW7qOf4+/vr7NmzNVwZAAB1l8lkKve9YRgVxiqzZs0aTZ06VUlJSWrRokVNlQfASuy5N2clOgAAAOosR0dHHTx40Pz1n504cUL33XefRowYoRtuuEFNmjTRV199pTlz5mjgwIHl5p4+fbrCCrqGDRvK3d29Zg8AAAA74unpKUdHxwrvmbm5uRVWp/+vpKQkjRw5Um+99ZZuu+22miwTgJXYc29OiA4AAICqGWpYu4IqsdRMN27cWD169NCCBQv0448/qqioSD4+PnrkkUc0ceLEcnOffvppPf300+XGHnvsMb388ss1VjcAAPbGxcVFgYGBSklJ0aBBg8zjKSkpFUKwP1uzZo1GjBihNWvWqH///rVRKlA32FlfLtlvb06IDgAAgDolMTHxLx9/5513zF/PmjVLs2bN+sv5mZmZl18UAAD1RGxsrKKiohQUFKSQkBAtW7ZMWVlZGj16tCQpLi5OR48e1cqVKyVdCNCHDRumhQsXKjg42Ly6tEGDBvLw8JB04YalBw4cMH999OhRZWRkqHHjxtyzBLBxdaU3J0QHAAAAAABAtYiMjNSJEyc0ffp0ZWdnq3PnzkpOTpavr68kKTs7W1lZWeb5S5cuVXFxsR5//HE9/vjj5vHhw4ebw7djx44pICDA/Njzzz+v559/XjfddJO2bdtWK8cFoH4jRAcAAAAAAEC1iY6OVnR0dKWP/e+q1IsJwdu0aSPDsL/LVgCoOxysXQAAAAAAAAAAALaKEB0AAAAAAAAAAAsI0QEAAGARH52+dPzsAAAAUJ3oLy9NdfzcCNEBAABQgbOzsyTp3LlzVq7EfpX97Mp+lgAAAMCloDe/PNXRl3NjUQAAAFTg6Oiopk2bKjc3V5LUsGFDmUwmK1dlHwzD0Llz55Sbm6umTZvK0dHR2iUBAADAjtGbX5rq7MsJ0QEAAFCpli1bSpK5WUfVNG3a1PwzBADAXsxOz7N2CbVmQoCntUsALhq9+aWrjr6cEB0AAACVMplMatWqlVq0aKGioiJrl2NXnJ2dWYEOAACAakNvfmmqqy8nRAcAAMBfcnR0JBAGAAAAbAC9uXVwY1EAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwAAAAAAAADAAkJ0AAAAAAAAAAAsIEQHAAAAAAAAAMACQnQAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwAAAAAAAADAAkJ0AAAAAAAAAAAsIEQHAAAAAAAAAMACQnQAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwAAAAAAAADAAkJ0AAAAAAAAAAAsIEQHAAAAAAAAAMACQnQAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAMBOLV68WH5+fnJzc1NgYKB27Nhhce769evVt29feXl5yd3dXSEhIdq8eXOFeevWrZO/v79cXV3l7++vDRs21OQhAAAAADaPEB0AAACwQ0lJSYqJiVF8fLzS09MVFhamiIgIZWVlVTp/+/bt6tu3r5KTk5WWlqZbbrlFd955p9LT081zUlNTFRkZqaioKO3Zs0dRUVEaMmSIdu/eXVuHBQAAANgck2EYhrWLqA75+fny8PDQqVOn5O7ubu1yAABVMDs9z9ol1JoJAZ7WLgGADaiO3rVHjx7q1q2blixZYh7r2LGj7r77bs2aNeui9tGpUydFRkbq6aefliRFRkYqPz9fH3zwgXnO7bffrmbNmmnNmjWV7qOgoEAFBQXm7/Pz8+Xj42O1vpz3FAC4PPweBVCfXGxfzkp0AAAAwM4UFhYqLS1N4eHh5cbDw8O1a9eui9pHaWmpTp8+rebNm5vHUlNTK+yzX79+f7nPWbNmycPDw7z5+PhU4UgAAAAA20eIDgAAANiZvLw8lZSUyNvbu9y4t7e3cnJyLmof8+bN09mzZzVkyBDzWE5OTpX3GRcXp1OnTpm3I0eOVOFIAAAAANvnZO0CAAAAAFwak8lU7nvDMCqMVWbNmjWaOnWqNm7cqBYtWlzWPl1dXeXq6lqFqgEAAAD7QogOAAAA2BlPT085OjpWWCGem5tbYSX5/0pKStLIkSP11ltv6bbbbiv3WMuWLS9pnwAAAEBdxuVcAAAAADvj4uKiwMBApaSklBtPSUlRaGioxeetWbNGDz30kFavXq3+/ftXeDwkJKTCPj/66KO/3CcAAABQ17ESHQAAALBDsbGxioqKUlBQkEJCQrRs2TJlZWVp9OjRki5cq/zo0aNauXKlpAsB+rBhw7Rw4UIFBwebV5w3aNBAHh4ekqRx48apd+/eeu655zRw4EBt3LhRW7Zs0c6dO61zkAAAAIANYCU6AAAAYIciIyOVkJCg6dOnq2vXrtq+fbuSk5Pl6+srScrOzlZWVpZ5/tKlS1VcXKzHH39crVq1Mm/jxo0zzwkNDdXatWv1+uuv64YbblBiYqKSkpLUo0ePWj8+AAAAwFawEh0AAACwU9HR0YqOjq70scTExHLfb9u27aL2OXjwYA0ePPgyKwMAAADqDlaiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAdmTx4sXy8/OTm5ubAgMDtWPHDotzs7OzNXToULVv314ODg6KiYmpMKeoqEjTp09X27Zt5ebmpi5duujDDz+swSMAAMC+EKIDAAAAAGAnkpKSFBMTo/j4eKWnpyssLEwRERHKysqqdH5BQYG8vLwUHx+vLl26VDpn0qRJWrp0qRYtWqQDBw5o9OjRGjRokNLT02vyUAAAsBuE6AAAAAAA2In58+dr5MiRGjVqlDp27KiEhAT5+PhoyZIllc5v06aNFi5cqGHDhsnDw6PSOW+88YYmTpyoO+64Q9dcc43GjBmjfv36ad68eTV5KAAA2A1CdAAAAAAA7EBhYaHS0tIUHh5ebjw8PFy7du265P0WFBTIzc2t3FiDBg20c+fOS94nAAB1CSE6AAAAAAB2IC8vTyUlJfL29i437u3trZycnEveb79+/TR//nwdOnRIpaWlSklJ0caNG5WdnX25JQMAUCcQogMAAAAAYEdMJlO57w3DqDBWFQsXLlS7du3UoUMHubi4aOzYsXr44Yfl6Oh4uaUCAFAnEKIDAAAAAGAHPD095ejoWGHVeW5uboXV6VXh5eWld955R2fPntXPP/+sb7/9Vo0bN5afn9/llgwAQJ1AiA4AAAAAgB1wcXFRYGCgUlJSyo2npKQoNDT0svfv5uamq666SsXFxVq3bp0GDhx42fsEAKAucLJ2AQAAAAAA4OLExsYqKipKQUFBCgkJ0bJly5SVlaXRo0dLkuLi4nT06FGtXLnS/JyMjAxJ0pkzZ3T8+HFlZGTIxcVF/v7+kqTdu3fr6NGj6tq1q44ePaqpU6eqtLRU48ePr/XjAwDAFhGiAwAAAABgJyIjI3XixAlNnz5d2dnZ6ty5s5KTk+Xr6ytJys7OVlZWVrnnBAQEmL9OS0vT6tWr5evrq8zMTEnS+fPnNWnSJP30009q3Lix7rjjDr3xxhtq2rRpbR0WAAA2jRAdAAAAAAA7Eh0drejo6EofS0xMrDBmGMZf7u+mm27SgQMHqqM0AADqJK6JDgAAAAAAAACABYToAAAAAAAAAABYQIgOAAAAAAAAAIAFhOgAAAAAAAAAAFhAiA4AAAAAAAAAgAVO1i4AAAAAAID6YnZ6nrVLqDUTAjytXQIAANWClegAAAAAAAAAAFhAiA4AAAAAAAAAgAWE6AAAAAAAAAAAWECIDgAAAAAAAACABYToAAAAAAAAAABYQIgOAAAAAAAAAIAFhOgAAAAAAAAAAFhAiA4AAAAAAAAAgAWE6AAAAAAAAADqjcWLF8vPz09ubm4KDAzUjh07LM7Nzs7W0KFD1b59ezk4OCgmJqbSeQkJCWrfvr0aNGggHx8fPfnkkzp//nwNHQFqGyE6AAAAAAAAgHohKSlJMTExio+PV3p6usLCwhQREaGsrKxK5xcUFMjLy0vx8fHq0qVLpXNWrVqlCRMmaMqUKTp48KCWL1+upKQkxcXF1eShoBYRogMAAAAAAACoF+bPn6+RI0dq1KhR6tixoxISEuTj46MlS5ZUOr9NmzZauHChhg0bJg8Pj0rnpKamqmfPnho6dKjatGmj8PBw/eMf/9BXX31Vk4eCWkSIDgAAAAAAAKDOKywsVFpamsLDw8uNh4eHa9euXZe83169eiktLU1ffPGFJOmnn35ScnKy+vfvf1n1wnY4WbsAAAAAAAAAAKhpeXl5Kikpkbe3d7lxb29v5eTkXPJ+77//fh0/fly9evWSYRgqLi7WmDFjNGHChMstGTaClegAAAAAAAAA6g2TyVTue8MwKoxVxbZt2zRjxgwtXrxYX3/9tdavX69NmzbpmWeeudxSYSNYiQ4AAAAAAACgzvP09JSjo2OFVee5ubkVVqdXxeTJkxUVFaVRo0ZJkq6//nqdPXtWjz76qOLj4+XgwDpme8f/gwAAAAAAAADqPBcXFwUGBiolJaXceEpKikJDQy95v+fOnasQlDs6OsowDBmGccn7he1gJToAAAAAAACAeiE2NlZRUVEKCgpSSEiIli1bpqysLI0ePVqSFBcXp6NHj2rlypXm52RkZEiSzpw5o+PHjysjI0MuLi7y9/eXJN15552aP3++AgIC1KNHD/3www+aPHmy7rrrLjk6Otb6MaL6EaIDAAAAAAAAqBciIyN14sQJTZ8+XdnZ2ercubOSk5Pl6+srScrOzlZWVla55wQEBJi/TktL0+rVq+Xr66vMzExJ0qRJk2QymTRp0iQdPXpUXl5euvPOOzVjxoxaOy7ULEJ0AAAAAAAAAPVGdHS0oqOjK30sMTGxwtjfXZLFyclJU6ZM0ZQpU6qjPNggrokOAAAAAAAAAIAFhOgAAAAAAAAAAFhAiA4AAAAAAAAAgAWXFKIvXrxYfn5+cnNzU2BgoHbs2GFx7vr169W3b195eXnJ3d1dISEh2rx5c4V569atk7+/v1xdXeXv768NGzZcSmkAAAAAAAAAAFSbKofoSUlJiomJUXx8vNLT0xUWFqaIiIgKd60ts337dvXt21fJyclKS0vTLbfcojvvvFPp6enmOampqYqMjFRUVJT27NmjqKgoDRkyRLt37770IwMAAAAAAAAA4DKZjL+7vez/6NGjh7p166YlS5aYxzp27Ki7775bs2bNuqh9dOrUSZGRkXr66aclSZGRkcrPz9cHH3xgnnP77berWbNmWrNmzUXtMz8/Xx4eHjp16pTc3d2rcEQAAGubnZ5n7RJqzYQAT2uXAMAG1OXe1drHxnsKbB3nKGwd5yhsHecoqtPF9q5VWoleWFiotLQ0hYeHlxsPDw/Xrl27LmofpaWlOn36tJo3b24eS01NrbDPfv36/eU+CwoKlJ+fX24DAAAAAAAAAKA6VSlEz8vLU0lJiby9vcuNe3t7Kycn56L2MW/ePJ09e1ZDhgwxj+Xk5FR5n7NmzZKHh4d58/HxqcKRAAAAAAAAAADw9y7pxqImk6nc94ZhVBirzJo1azR16lQlJSWpRYsWl7XPuLg4nTp1yrwdOXKkCkcAAAAAAAAAAMDfc6rKZE9PTzk6OlZYIZ6bm1thJfn/SkpK0siRI/XWW2/ptttuK/dYy5Ytq7xPV1dXubq6VqV8AAAAAAAAAACqpEor0V1cXBQYGKiUlJRy4ykpKQoNDbX4vDVr1uihhx7S6tWr1b9//wqPh4SEVNjnRx999Jf7BAAAAAAAAACgplVpJbokxcbGKioqSkFBQQoJCdGyZcuUlZWl0aNHS7pwmZWjR49q5cqVki4E6MOGDdPChQsVHBxsXnHeoEEDeXh4SJLGjRun3r1767nnntPAgQO1ceNGbdmyRTt37qyu4wQAAAAAAAAAoMqqfE30yMhIJSQkaPr06eratau2b9+u5ORk+fr6SpKys7OVlZVlnr906VIVFxfr8ccfV6tWrczbuHHjzHNCQ0O1du1avf7667rhhhuUmJiopKQk9ejRoxoOEQAAAAAAAACAS1PlleiSFB0drejo6EofS0xMLPf9tm3bLmqfgwcP1uDBgy+lHAAAAAAAAAAAakSVV6IDAAAAAAAAAFBfEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAGCnFi9eLD8/P7m5uSkwMFA7duywODc7O1tDhw5V+/bt5eDgoJiYmApzEhMTZTKZKmznz5+vwaMAAAAAbBshOgAAAGCHkpKSFBMTo/j4eKWnpyssLEwRERHKysqqdH5BQYG8vLwUHx+vLl26WNyvu7u7srOzy21ubm41dRgAAACAzSNEBwAAAOzQ/PnzNXLkSI0aNUodO3ZUQkKCfHx8tGTJkkrnt2nTRgsXLtSwYcPk4eFhcb8mk0ktW7YstwEAAAD1GSE6AAAAYGcKCwuVlpam8PDwcuPh4eHatWvXZe37zJkz8vX11dVXX60BAwYoPT39L+cXFBQoPz+/3AYAAADUJYToAAAAgJ3Jy8tTSUmJvL29y417e3srJyfnkvfboUMHJSYm6t1339WaNWvk5uamnj176tChQxafM2vWLHl4eJg3Hx+fS359AAAAwBYRogMAAAB2ymQylfveMIwKY1URHBysBx98UF26dFFYWJjefPNNXXfddVq0aJHF58TFxenUqVPm7ciRI5f8+gAAAIAtcrJ2AQAAAACqxtPTU46OjhVWnefm5lZYnX45HBwc1L17979cie7q6ipXV9dqe00AAADA1rASHQAAALAzLi4uCgwMVEpKSrnxlJQUhYaGVtvrGIahjIwMtWrVqtr2CQAAANgbVqIDAAAAdig2NlZRUVEKCgpSSEiIli1bpqysLI0ePVrShcusHD16VCtXrjQ/JyMjQ9KFm4ceP35cGRkZcnFxkb+/vyRp2rRpCg4OVrt27ZSfn68XXnhBGRkZeumll2r9+AAAAABbQYgOAAAA2KHIyEidOHFC06dPV3Z2tjp37qzk5GT5+vpKkrKzs5WVlVXuOQEBAeav09LStHr1avn6+iozM1OS9Pvvv+vRRx9VTk6OPDw8FBAQoO3bt+vGG2+steMCAAAAbA0hOgAAAGCnoqOjFR0dXeljiYmJFcYMw/jL/S1YsEALFiyojtIAAACAOoNrogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGDBJYXoixcvlp+fn9zc3BQYGKgdO3ZYnJudna2hQ4eqffv2cnBwUExMTIU5iYmJMplMFbbz589fSnkAAAAAAAAAAFSLKofoSUlJiomJUXx8vNLT0xUWFqaIiAhlZWVVOr+goEBeXl6Kj49Xly5dLO7X3d1d2dnZ5TY3N7eqlgcAAAAAAAAAQLWpcog+f/58jRw5UqNGjVLHjh2VkJAgHx8fLVmypNL5bdq00cKFCzVs2DB5eHhY3K/JZFLLli3LbQAAAAAAAAAAWFOVQvTCwkKlpaUpPDy83Hh4eLh27dp1WYWcOXNGvr6+uvrqqzVgwAClp6f/5fyCggLl5+eX2wAAAAAAAAAAqE5VCtHz8vJUUlIib2/vcuPe3t7Kycm55CI6dOigxMREvfvuu1qzZo3c3NzUs2dPHTp0yOJzZs2aJQ8PD/Pm4+Nzya8PAAAAAAAAAEBlLunGoiaTqdz3hmFUGKuK4OBgPfjgg+rSpYvCwsL05ptv6rrrrtOiRYssPicuLk6nTp0yb0eOHLnk1wcAAAAAAAAAoDJOVZns6ekpR0fHCqvOc3NzK6xOvxwODg7q3r37X65Ed3V1laura7W9JgAAAAAAAAAA/6tKK9FdXFwUGBiolJSUcuMpKSkKDQ2ttqIMw1BGRoZatWpVbfsEAAAAAAAAAKCqqrQSXZJiY2MVFRWloKAghYSEaNmyZcrKytLo0aMlXbjMytGjR7Vy5UrzczIyMiRduHno8ePHlZGRIRcXF/n7+0uSpk2bpuDgYLVr1075+fl64YUXlJGRoZdeeqkaDhEAAAAAAAAAgEtT5RA9MjJSJ06c0PTp05Wdna3OnTsrOTlZvr6+kqTs7GxlZWWVe05AQID567S0NK1evVq+vr7KzMyUJP3+++969NFHlZOTIw8PDwUEBGj79u268cYbL+PQAAAAAAAAAAC4PFUO0SUpOjpa0dHRlT6WmJhYYcwwjL/c34IFC7RgwYJLKQUAAAAAAAAAgBpTpWuiAwAAAAAAAABQnxCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKIDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOgAAAAAAAAAAFhCiAwAAAAAAAABgASE6AAAAAAAAAAAWEKLbkMWLF8vPz09ubm4KDAzUjh07LM7Nzs7W0KFD1b59ezk4OCgmJqbCnPXr1ysoKEhNmzZVo0aN1LVrV73xxhs1eAQAAAAAAAAAULcQotuIpKQkxcTEKD4+Xunp6QoLC1NERISysrIqnV9QUCAvLy/Fx8erS5culc5p3ry54uPjlZqaqr179+rhhx/Www8/rM2bN9fkoQAAAAAAAABAnUGIbiPmz5+vkSNHatSoUerYsaMSEhLk4+OjJUuWVDq/TZs2WrhwoYYNGyYPD49K59x8880aNGiQOnbsqLZt22rcuHG64YYbtHPnzpo8FAAAAAAAAACoMwjRbUBhYaHS0tIUHh5ebjw8PFy7du2qltcwDENbt27Vd999p969e1fLPgEAAAAAAACgrnOydgGQ8vLyVFJSIm9v73Lj3t7eysnJuax9nzp1SldddZUKCgrk6OioxYsXq2/fvpe1TwAAAAAAAACoLwjRbYjJZCr3vWEYFcaqqkmTJsrIyNCZM2e0detWxcbG6pprrtHNN998WfsFAAAAAAAAgPqAEN0GeHp6ytHRscKq89zc3Aqr06vKwcFB1157rSSpa9euOnjwoGbNmkWIDgAAAAAAAAAXgWui2wAXFxcFBgYqJSWl3HhKSopCQ0Or9bUMw1BBQUG17hMAAAAAAAAA6ipWotuI2NhYRUVFKSgoSCEhIVq2bJmysrI0evRoSVJcXJyOHj2qlStXmp+TkZEhSTpz5oyOHz+ujIwMubi4yN/fX5I0a9YsBQUFqW3btiosLFRycrJWrlypJUuW1PrxAQAAAAAAAIA9IkS3EZGRkTpx4oSmT5+u7Oxsde7cWcnJyfL19ZUkZWdnKysrq9xzAgICzF+npaVp9erV8vX1VWZmpiTp7Nmzio6O1i+//KIGDRqoQ4cO+u9//6vIyMhaOy4AAAAAAAAAsGeE6DYkOjpa0dHRlT6WmJhYYcwwjL/c37PPPqtnn322OkoDAAAAAAAAgHqJa6IDAAAAAAAAAGABIToAAAAAAAAAABYQogMAAAAAAAAAYAEhOoCLtnjxYvn5+cnNzU2BgYHasWOHxbnZ2dkaOnSo2rdvLwcHB8XExFSY88orrygsLEzNmjVTs2bNdNttt+mLL76owSMAAAAAAAAAqoYQHcBFSUpKUkxMjOLj45Wenq6wsDBFREQoKyur0vkFBQXy8vJSfHy8unTpUumcbdu26R//+Ic++eQTpaamqnXr1goPD9fRo0dr8lAAAAAAAACAi0aIDuCizJ8/XyNHjtSoUaPUsWNHJSQkyMfHR0uWLKl0fps2bbRw4UINGzZMHh4elc5ZtWqVoqOj1bVrV3Xo0EGvvPKKSktLtXXr1po8FAAAAAAAAOCiOVm7gLpidnqetUuoNRMCPK1dAmpZYWGh0tLSNGHChHLj4eHh2rVrV7W9zrlz51RUVKTmzZtX2z4BAAAAAACAy8FKdAB/Ky8vTyUlJfL29i437u3trZycnGp7nQkTJuiqq67SbbfdVm37BAAAAAAAAC4HITqAi2Yymcp9bxhGhbFLNWfOHK1Zs0br16+Xm5tbtewTAGwJN2cGAAAAAPtEiA7gb3l6esrR0bHCqvPc3NwKq9MvxfPPP6+ZM2fqo48+0g033HDZ+wMAW8PNmQEAAADAfhGiA/hbLi4uCgwMVEpKSrnxlJQUhYaGXta+586dq2eeeUYffvihgoKCLmtfAGCruDkzAAAAANgvbiwK4KLExsYqKipKQUFBCgkJ0bJly5SVlaXRo0dLkuLi4nT06FGtXLnS/JyMjAxJ0pkzZ3T8+HFlZGTIxcVF/v7+ki5cwmXy5MlavXq12rRpY17p3rhxYzVu3Lh2DxAAagg3ZwYAAAAA+0aIDuCiREZG6sSJE5o+fbqys7PVuXNnJScny9fXV9KF6/f+72UJAgICzF+npaVp9erV8vX1VWZmpqQL1wcuLCzU4MGDyz1vypQpmjp1ao0eDwDUFm7ODAAAAAD2jRAdwEWLjo5WdHR0pY8lJiZWGDMM4y/3VxamA0B9UBs3Z962bRs3ZwYAAACAakaIDgAAUINq6+bMW7Zs4ebMAAAAAFADuLEoAABADeLmzAAAAABg31iJDgAAUMO4OTMAAAAA2C9CdAAAgBrGzZkBAAAAwH4RogMAANQCbs4MAAAAAPaJEB2oJ2an51m7hFozIcDT2iUAAAAAAACgjuDGogAAAAAAAAAAWECIDgAAAAAAAACABYToAAAAAAAAAABYQIgOAAAAAAAAAIAFhOgAAAAAAAAAAFjgZO0CAAAAbN3s9Dxrl1BrJgR4WrsEAAAAALAprEQHAAAAAAAAAMACQnQAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwAAAAAAAADAAkJ0AAAAAAAAAAAsIEQHAAAAAAAAAMACQnQAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwAAAAAAAADAAkJ0AAAAAAAAAAAsIEQHAAAAAAAAAMACQnQAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwAAAOzU4sWL5efnJzc3NwUGBmrHjh0W52ZnZ2vo0KFq3769HBwcFBMTU+m8devWyd/fX66urvL399eGDRtqqHoAAADAPhCiAwAAAHYoKSlJMTExio+PV3p6usLCwhQREaGsrKxK5xcUFMjLy0vx8fHq0qVLpXNSU1MVGRmpqKgo7dmzR1FRURoyZIh2795dk4cCAAAA2DRCdAAAAMAOzZ8/XyNHjtSoUaPUsWNHJSQkyMfHR0uWLKl0fps2bbRw4UINGzZMHh4elc5JSEhQ3759FRcXpw4dOiguLk59+vRRQkKCxToKCgqUn59fbgMAAADqEkJ0AAAAwM4UFhYqLS1N4eHh5cbDw8O1a9euS95vampqhX3269fvL/c5a9YseXh4mDcfH59Lfn0AAADAFhGiAwAAAHYmLy9PJSUl8vb2Ljfu7e2tnJycS95vTk5OlfcZFxenU6dOmbcjR45c8usDAAAAtsjJ2gUAAAAAuDQmk6nc94ZhVBir6X26urrK1dX1sl4TAAAAsGWsRAcAAADsjKenpxwdHSusEM/Nza2wkrwqWrZsWe37BAAAAOwdIToAAABgZ1xcXBQYGKiUlJRy4ykpKQoNDb3k/YaEhFTY50cffXRZ+wQAAADsHZdzAQAAAOxQbGysoqKiFBQUpJCQEC1btkxZWVkaPXq0pAvXKj969KhWrlxpfk5GRoYk6cyZMzp+/LgyMjLk4uIif39/SdK4cePUu3dvPffccxo4cKA2btyoLVu2aOfOnbV+fAAAAICtIEQHAAAA7FBkZKROnDih6dOnKzs7W507d1ZycrJ8fX0lSdnZ2crKyir3nICAAPPXaWlpWr16tXx9fZWZmSlJCg0N1dq1azVp0iRNnjxZbdu2VVJSknr06FFrxwUAAADYGkJ0AAAAwE5FR0crOjq60scSExMrjBmG8bf7HDx4sAYPHny5pQEAAAB1BtdEBwAAAAAAAADAAkJ0AAAAAAAAAAAsIEQHAAAAAAAAAMACQnQAAAAAAAAAACwgRAcAAAAAAAAAwAJCdAAAAAAAAAAALCBEBwDAzixevFh+fn5yc3NTYGCgduzYYXFudna2hg4dqvbt28vBwUExMTGVzlu3bp38/f3l6uoqf39/bdiwoYaqBwAAAADAvhCiAwBgR5KSkhQTE6P4+Hilp6crLCxMERERysrKqnR+QUGBvLy8FB8fry5dulQ6JzU1VZGRkYqKitKePXsUFRWlIUOGaPfu3TV5KAAAAAAA2AVCdAAA7Mj8+fM1cuRIjRo1Sh07dlRCQoJ8fHy0ZMmSSue3adNGCxcu1LBhw+Th4VHpnISEBPXt21dxcXHq0KGD4uLi1KdPHyUkJNTgkQAAAAAAYB8I0QEAsBOFhYVKS0tTeHh4ufHw8HDt2rXrkvebmppaYZ/9+vW7rH0CAAAAAFBXEKIDAGAn8vLyVFJSIm9v73Lj3t7eysnJueT95uTkVPs+AQAAAACoKwjRAQCwMyaTqdz3hmFUGLOFfQIAAAAAUBcQogMAYCc8PT3l6OhYYYV4bm5uhZXkVdGyZctq3ycAAAAAAHUFIToAAHbCxcVFgYGBSklJKTeekpKi0NDQS95vSEhIhX1+9NFHl7VPAAAAAADqCidrFwAAAC5ebGysoqKiFBQUpJCQEC1btkxZWVkaPXq0JCkuLk5Hjx7VypUrzc/JyMiQJJ05c0bHjx9XRkaGXFxc5O/vL0kaN26cevfureeee04DBw7Uxo0btWXLFu3cubPWjw8AAAAAAFtDiA4AgB2JjIzUiRMnNH36dGVnZ6tz585KTk6Wr6+vJCk7O1tZWVnlnhMQEGD+Oi0tTatXr5avr68yMzMlSaGhoVq7dq0mTZqkyZMnq23btkpKSlKPHj1q7bgAAAAAALBVhOgAANiZ6OhoRUdHV/pYYmJihTHDMP52n4MHD9bgwYMvtzQAAAAAAOocrokOAAAAAAAAAIAFhOgAAAAAAAAAAFhAiA4AAAAAAAAAgAWXFKIvXrxYfn5+cnNzU2BgoHbs2GFxbnZ2toYOHar27dvLwcFBMTExlc5bt26d/P395erqKn9/f23YsOFSSgMAAAAAAAAAoNpUOURPSkpSTEyM4uPjlZ6errCwMEVERCgrK6vS+QUFBfLy8lJ8fLy6dOlS6ZzU1FRFRkYqKipKe/bsUVRUlIYMGaLdu3dXtTwAAAAAAAAAAKpNlUP0+fPna+TIkRo1apQ6duyohIQE+fj4aMmSJZXOb9OmjRYuXKhhw4bJw8Oj0jkJCQnq27ev4uLi1KFDB8XFxalPnz5KSEiwWEdBQYHy8/PLbQAAAAAAAAAAVCenqkwuLCxUWlqaJkyYUG48PDxcu3btuuQiUlNT9eSTT5Yb69ev31+G6LNmzdK0adMu+TUBALCK1SZrV1C7hhrWrgAAAACoMYsXL9bcuXOVnZ2tTp06KSEhQWFhYRbnf/rpp4qNjdX+/ft15ZVXavz48Ro9enS5OQkJCVqyZImysrLk6empwYMHa9asWXJzc6vpwwFgQZVWoufl5amkpETe3t7lxr29vZWTk3PJReTk5FR5n3FxcTp16pR5O3LkyCW/PgAAAAAAAFAVVb3k8eHDh3XHHXcoLCxM6enpmjhxop544gmtW7fOPGfVqlWaMGGCpkyZooMHD2r58uVKSkpSXFxcbR0WgEpUaSV6GZOp/Co6wzAqjNX0Pl1dXeXq6npZrwkAAAAAAABcij9f8li6sIJ88+bNWrJkiWbNmlVh/ssvv6zWrVubr7zQsWNHffXVV3r++ed17733SrpwtYaePXtq6NChki5cJvkf//iHvvjii9o5KACVqtJKdE9PTzk6OlZYIZ6bm1thJXlVtGzZstr3CQAAAAAAANSEskseh4eHlxv/q0sep6amVpjfr18/ffXVVyoqKpIk9erVS2lpaebQ/KefflJycrL69+9fA0cB4GJVKUR3cXFRYGCgUlJSyo2npKQoNDT0kosICQmpsM+PPvrosvYJAAAAAAAA1IRLueSxpcsZFxcXKy8vT5J0//3365lnnlGvXr3k7Oystm3b6pZbbqlwf0IAtavKl3OJjY1VVFSUgoKCFBISomXLlikrK8t8E4S4uDgdPXpUK1euND8nIyNDknTmzBkdP35cGRkZcnFxkb+/vyRp3Lhx6t27t5577jkNHDhQGzdu1JYtW7Rz585qOEQAAAAAAACg+lX18sSVzf/z+LZt2zRjxgwtXrxYPXr00A8//KBx48apVatWmjx5cjVXD+BiVTlEj4yM1IkTJzR9+nRlZ2erc+fOSk5Olq+vryQpOzu7wg0UAgICzF+npaVp9erV8vX1VWZmpiQpNDRUa9eu1aRJkzR58mS1bdtWSUlJ6tGjx2UcGgAAAAAAAFD9LuWSx5YuZ+zk5KQrrrhCkjR58mRFRUWZr7N+/fXX6+zZs3r00UcVHx8vB4cqXVQCQDW5pH950dHRyszMVEFBgdLS0tS7d2/zY4mJidq2bVu5+YZhVNjKAvQygwcP1rfffqvCwkIdPHhQ99xzz6WUBgAAAAC4SIsXL5afn5/c3NwUGBioHTt2/OX8Tz/9VIGBgXJzc9M111yjl19+ucKchIQEtW/fXg0aNJCPj4+efPJJnT9/vqYOAQCs4lIueWzpcsZBQUFydnaWJJ07d65CUO7o6GjO0wBYB3++AgAAAIB6KCkpSTExMYqPj1d6errCwsIUERFR4ZPFZQ4fPqw77rhDYWFhSk9P18SJE/XEE09o3bp15jmrVq3ShAkTNGXKFB08eFDLly9XUlKS4uLiauuwAKDWxMbG6tVXX9Vrr72mgwcP6sknn6xwyeNhw4aZ548ePVo///yzYv9fe3ceVVW9/3/8dZjEnEVFLQe0W5JmKtgVFfXmFa9TVpZ6Ne3rGKKpkDcTJJemYeVAjlTiJS3TUpuUQrScklQUNZUcUTQhAs0xGffvD3+c5MIpLeUMPB9rse7lcz779N6uDbx489mfHRKi5ORkLV26VNHR0ZowYYJ5Tq9evbR48WKtXLlSKSkpio+PV3h4uB5//HE5OzuX+jkCuOG2t3MBAAAAANi/OXPmaNiwYeYtAyIjIxUXF6fFixcrIiKi2PyoqCjVr19fkZGRkiRvb28lJiZq1qxZ6tOnjyQpISFB7dq104ABAyRJDRs21L///W/t2rWrdE4KAErR7W557OXlpdjYWAUHB2vhwoWqW7eu5s2bZ/4eKkmTJ0+WyWTS5MmT9eOPP6pmzZrq1auXZsyYUernB+A3NNEBAAAAoIzJycnRnj179PLLLxcZDwgI0I4dO0o8JiEhQQEBAUXGunbtqujoaOXm5srV1VXt27fX+++/r127dunRRx/VyZMnFRsbq+eee+6unQsAWFNQUJCCgoJKfC0mJqbYWMeOHbV3716L7+fi4qIpU6ZoypQpd6pEAHcATXQAAAAAKGMyMzOVn59f7OF3np6exR56Vyg9Pb3E+Xl5ecrMzFSdOnXUv39//fzzz2rfvr0Mw1BeXp5GjRpVrFkPAABgT9gTHQAAAADKKJPJVORzwzCKjf3R/JvHN2/erBkzZmjRokXau3ev1q5dq3Xr1unVV1+9w5UDAACUHlaiAwAAAEAZU6NGDTk7OxdbdZ6RkVFstXmh2rVrlzjfxcVFHh4ekqTw8HANGjTIvM/6ww8/rKtXr2rkyJEKCwuTkxPruAAAgP0hwQAAAABAGePm5iYfHx/Fx8cXGY+Pj1fbtm1LPMbPz6/Y/A0bNsjX11eurq6SpGvXrhVrlDs7O8swDPOqdQAAAHtDEx0AAAAAyqCQkBAtWbJES5cuVXJysoKDg5WamqrAwEBJ0qRJkzR48GDz/MDAQJ0+fVohISFKTk7W0qVLFR0drQkTJpjn9OrVS4sXL9bKlSuVkpKi+Ph4hYeH6/HHH5ezs3OpnyMAAMCdwHYuAAAAAFAG9evXT1lZWZo2bZrS0tLUrFkzxcbGqkGDBpKktLQ0paammud7eXkpNjZWwcHBWrhwoerWrat58+apT58+5jmTJ0+WyWTS5MmT9eOPP6pmzZrq1auXZsyYUernBwB/aIXlZ0A4nAHcDQT8FTTRAQAAAKCMCgoKUlBQUImvxcTEFBvr2LGj9u7da/H9XFxcNGXKFE2ZMuVOlQgAAGB1bOcCAAAAAAAAAIAFNNEBAAAAAAAAALCAJjoAAAAAAAAAABbQRAcAAAAAAAAAwAKa6AAAAAAAAAAAWOBi7QIAAAAAAH/CCpO1KyhdAwxrVwAAAMooVqIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAANmnRokXy8vKSu7u7fHx8tG3btt+dv2XLFvn4+Mjd3V2NGjVSVFRUkdc7deokk8lU7KNHjx538zQAAHaOJjoAAAAAALA5q1at0vjx4xUWFqakpCT5+/urW7duSk1NLXF+SkqKunfvLn9/fyUlJSk0NFRjx47VmjVrzHPWrl2rtLQ088fBgwfl7OysZ555prROCwBgh2iiAwAAAAAAmzNnzhwNGzZMw4cPl7e3tyIjI1WvXj0tXry4xPlRUVGqX7++IiMj5e3treHDh2vo0KGaNWuWeU716tVVu3Zt80d8fLzuuecemugAgN9FEx0AAAAAANiUnJwc7dmzRwEBAUXGAwICtGPHjhKPSUhIKDa/a9euSkxMVG5ubonHREdHq3///qpQocKdKRwA4JBoogMAAAAAAJuSmZmp/Px8eXp6Fhn39PRUenp6icekp6eXOD8vL0+ZmZnF5u/atUsHDx7U8OHD71zhAACHRBMdAAAAAADYJJPJVORzwzCKjf3R/JLGpRur0Js1a6ZHH330DlQKAHBkNNEBAAAAAIBNqVGjhpydnYutOs/IyCi22rxQ7dq1S5zv4uIiDw+PIuPXrl3TypUrWYUOALglNNEBAAAAAIBNcXNzk4+Pj+Lj44uMx8fHq23btiUe4+fnV2z+hg0b5OvrK1dX1yLjH330kbKzs/Xss8/e2cIBAA6JJjoAAAAAALA5ISEhWrJkiZYuXark5GQFBwcrNTVVgYGBkqRJkyZp8ODB5vmBgYE6ffq0QkJClJycrKVLlyo6OloTJkwo9t7R0dF64okniq1QBwCgJC7WLgAAAAAAAOB/9evXT1lZWZo2bZrS0tLUrFkzxcbGqkGDBpKktLQ0paammud7eXkpNjZWwcHBWrhwoerWrat58+apT58+Rd736NGj2r59uzZs2FCq5wMAsF+sRAcAAAAAADYpKChIp06dUnZ2tvbs2aMOHTqYX4uJidHmzZuLzO/YsaP27t2r7OxspaSkmFet3+yBBx6QYRjq0qXL3S4fAKxu0aJF8vLykru7u3x8fLRt27bfnb9lyxb5+PjI3d1djRo1UlRUVLE5v/zyi0aPHq06derI3d1d3t7eio2NvVunYBNoogMAAAAAAACAg1m1apXGjx+vsLAwJSUlyd/fX926dStyF8/NUlJS1L17d/n7+yspKUmhoaEaO3as1qxZY56Tk5OjLl266NSpU1q9erWOHDmid999V/fee29pnZZVsJ0LAAAAAAAAADiYOXPmaNiwYRo+fLgkKTIyUnFxcVq8eLEiIiKKzY+KilL9+vUVGRkpSfL29lZiYqJmzZpl3hpr6dKlOn/+vHbs2GF+aHPhNluOjJXoAAAAAAAAAOBAcnJytGfPHgUEBBQZDwgI0I4dO0o8JiEhodj8rl27KjExUbm5uZKkzz//XH5+fho9erQ8PT3VrFkzvfbaa8rPz787J2IjaKIDAAAAAAAAgAPJzMxUfn6+PD09i4x7enoqPT29xGPS09NLnJ+Xl6fMzExJ0smTJ7V69Wrl5+crNjZWkydP1uzZszVjxoy7cyI2gu1cAAAAAAAAAMABmUymIp8bhlFs7I/m3zxeUFCgWrVq6Z133pGzs7N8fHx07tw5vfnmm3rllVfucPW2gyY6AAAAAAC481ZYbtI4nAGGtSsAgCJq1KghZ2fnYqvOMzIyiq02L1S7du0S57u4uMjDw0OSVKdOHbm6usrZ2dk8x9vbW+np6crJyZGbm9sdPhPbwHYuAAAAAAAAAOBA3Nzc5OPjo/j4+CLj8fHxatu2bYnH+Pn5FZu/YcMG+fr6mh8i2q5dOx0/flwFBQXmOUePHlWdOnUctoEu0UQHAAAAAAAAAIcTEhKiJUuWaOnSpUpOTlZwcLBSU1MVGBgoSZo0aZIGDx5snh8YGKjTp08rJCREycnJWrp0qaKjozVhwgTznFGjRikrK0vjxo3T0aNHtX79er322msaPXp0qZ9faWI7FwAAAAAAAABwMP369VNWVpamTZumtLQ0NWvWTLGxsWrQoIEkKS0tTampqeb5Xl5eio2NVXBwsBYuXKi6detq3rx56tOnj3lOvXr1tGHDBgUHB6t58+a69957NW7cOE2cOLHUz6800UQHAAAAAAAAAAcUFBSkoKCgEl+LiYkpNtaxY0ft3bv3d9/Tz89P33333Z0oz26wnQsAAAAAAAAAABbQRAcAAAAAAAAAwAKa6AAAAAAAAAAAWEATHQAAAAAAAAAAC2iiAwAAAAAAAABggYu1CwAAAAAAAAAA/I8VJmtXUHoGGNau4HexEh0AAAAAAAAAAAtoogMAAAAAAAAAYAFNdAAAAAAAAAAALKCJDgAAAAAAAACABTTRAQAAAAAAAACwgCY6AAAAAAAAAAAW0EQHAAAAAAAAAMACmugAAAAAAAAAAFhAEx0AAAAAAAAAAAtoogMAAAAAAAAAYAFNdAAAAAAAAAAALKCJDgAAAAAAAACABTTRAQAAAAAAAACwgCY6AAAAAAAAAAAW0EQHAAAAAAAAAMACmugAAAAAAAAAAFhAEx0AAAAAAAAAAAtoogMAAAAAAAAAYAFNdAAAAAAAAAAALKCJDgAAAAAAAACABTTRAQAAAAAAAACwgCY6AAAAAAAAAAAW0EQHAAAAAAAAAMACmugAAAAAAAAAAFhAEx0AAAAAAAAAAAtoogMAAAAAAAAAYAFNdAAAAAAAAAAALKCJDgAAAAAAAACABTTRAQAAAAAAAACwgCY6AAAAAAAAAAAW0EQHAAAA7NSiRYvk5eUld3d3+fj4aNu2bb87f8uWLfLx8ZG7u7saNWqkqKioIq/HxMTIZDIV+7h+/frdPA0AAADAptFEBwAAAOzQqlWrNH78eIWFhSkpKUn+/v7q1q2bUlNTS5yfkpKi7t27y9/fX0lJSQoNDdXYsWO1Zs2aIvMqV66stLS0Ih/u7u6lcUoAAACATXKxdgEAAAAAbt+cOXM0bNgwDR8+XJIUGRmpuLg4LV68WBEREcXmR0VFqX79+oqMjJQkeXt7KzExUbNmzVKfPn3M80wmk2rXrl0q5wAAAADYA1aiAwAAAHYmJydHe/bsUUBAQJHxgIAA7dixo8RjEhISis3v2rWrEhMTlZubax67cuWKGjRooPvuu089e/ZUUlLS79aSnZ2tS5cuFfkAAAAAHAlNdAAAAMDOZGZmKj8/X56enkXGPT09lZ6eXuIx6enpJc7Py8tTZmamJKlJkyaKiYnR559/rg8//FDu7u5q166djh07ZrGWiIgIValSxfxRr169v3h2AAAAgG2hiQ4AAADYKZPJVORzwzCKjf3R/JvH27Rpo2effVaPPPKI/P399dFHH+mBBx7Q/PnzLb7npEmTdPHiRfPHmTNn/uzpAAAAADaJPdEBAAAAO1OjRg05OzsXW3WekZFRbLV5odq1a5c438XFRR4eHiUe4+TkpNatW//uSvRy5cqpXLlyt3kGAAAAgP1gJToAAABgZ9zc3OTj46P4+Pgi4/Hx8Wrbtm2Jx/j5+RWbv2HDBvn6+srV1bXEYwzD0L59+1SnTp07UzgAAABgh2iiAwAAAHYoJCRES5Ys0dKlS5WcnKzg4GClpqYqMDBQ0o1tVgYPHmyeHxgYqNOnTyskJETJyclaunSpoqOjNWHCBPOcqVOnKi4uTidPntS+ffs0bNgw7du3z/yeAAAAQFnEdi4AAACAHerXr5+ysrI0bdo0paWlqVmzZoqNjVWDBg0kSWlpaUpNTTXP9/LyUmxsrIKDg7Vw4ULVrVtX8+bNU58+fcxzfvnlF40cOVLp6emqUqWKWrZsqa1bt+rRRx8t9fMDAAAAbAVNdAAAAMBOBQUFKSgoqMTXYmJiio117NhRe/futfh+c+fO1dy5c+9UeQAAAIBDYDsXAAAAAAAAAAAsoIkOAAAAAAAAAIAFNNEBAAAAAAAAALCAJjoAAAAAAAAAABbQRAcAAAAAAAAAwII/1URftGiRvLy85O7uLh8fH23btu1352/ZskU+Pj5yd3dXo0aNFBUVVeT1mJgYmUymYh/Xr1//M+UBAAAAAAAAAHBH3HYTfdWqVRo/frzCwsKUlJQkf39/devWTampqSXOT0lJUffu3eXv76+kpCSFhoZq7NixWrNmTZF5lStXVlpaWpEPd3f3P3dWAAAAAAAAAADcAS63e8CcOXM0bNgwDR8+XJIUGRmpuLg4LV68WBEREcXmR0VFqX79+oqMjJQkeXt7KzExUbNmzVKfPn3M80wmk2rXrn3LdWRnZys7O9v8+aVLl273VAAAAAAAAAAA+F23tRI9JydHe/bsUUBAQJHxgIAA7dixo8RjEhISis3v2rWrEhMTlZubax67cuWKGjRooPvuu089e/ZUUlLS79YSERGhKlWqmD/q1at3O6cCAAAAAAAAAMAfuq0memZmpvLz8+Xp6Vlk3NPTU+np6SUek56eXuL8vLw8ZWZmSpKaNGmimJgYff755/rwww/l7u6udu3a6dixYxZrmTRpki5evGj+OHPmzO2cCgAAAAAAAAAAf+i2t3ORbmy9cjPDMIqN/dH8m8fbtGmjNm3amF9v166dWrVqpfnz52vevHklvme5cuVUrly5P1M+AAAAAAAAAAC35LZWoteoUUPOzs7FVp1nZGQUW21eqHbt2iXOd3FxkYeHR8lFOTmpdevWv7sSHQAAAAAAAACAu+22muhubm7y8fFRfHx8kfH4+Hi1bdu2xGP8/PyKzd+wYYN8fX3l6upa4jGGYWjfvn2qU6fO7ZQHAAAAAAAAAMAddVtNdEkKCQnRkiVLtHTpUiUnJys4OFipqakKDAyUdGOv8sGDB5vnBwYG6vTp0woJCVFycrKWLl2q6OhoTZgwwTxn6tSpiouL08mTJ7Vv3z4NGzZM+/btM78nAAAAAAAAAADWcNt7ovfr109ZWVmaNm2a0tLS1KxZM8XGxqpBgwaSpLS0NKWmpprne3l5KTY2VsHBwVq4cKHq1q2refPmqU+fPuY5v/zyi0aOHKn09HRVqVJFLVu21NatW/Xoo4/egVMEAAAAAAAAAODP+VMPFg0KClJQUFCJr8XExBQb69ixo/bu3Wvx/ebOnau5c+f+mVIAAAAAAAAAALhrbns7FwAAAAAAAAAAygqa6AAAAAAAAAAAWEATHQAAAAAAAAAAC2iiAwAAAAAAAABgAU10AAAAAAAAAAAsoIkOAAAAAAAAAIAFNNEBAAAAAAAAALCAJjoAAAAAAAAAABbQRAcAAAAAAAAAwAKa6AAAAAAAAAAAWEATHQAAAAAAAAAAC2iiAwAAAAAAAABgAU10AAAAAAAAAAAsoIkOAAAAAAAAAIAFNNEBAAAAAAAAALCAJjoAAAAAAAAAABbQRAcAAAAAAAAAwAKa6AAAAAAAAAAAWEATHQAAAAAAAAAAC2iiAwAAAAAAAABgAU10AAAAAAAAAAAsoIkOAAAAAAAAAIAFNNEBAAAAAAAAALCAJjoAAAAAAAAAABbQRAcAAAAAAAAAwAKa6AAAAAAAAAAAWEATHQAAAAAAAAAAC2iiwyoWLVokLy8vubu7y8fHR9u2bfvd+Vu2bJGPj4/c3d3VqFEjRUVFFXl97dq18vX1VdWqVVWhQgW1aNFCy5cvv5unAAAAAAAAAKAMoImOUrdq1SqNHz9eYWFhSkpKkr+/v7p166bU1NQS56ekpKh79+7y9/dXUlKSQkNDNXbsWK1Zs8Y8p3r16goLC1NCQoIOHDigIUOGaMiQIYqLiyut0wIAAAAAAADggGiio9TNmTNHw4YN0/Dhw+Xt7a3IyEjVq1dPixcvLnF+VFSU6tevr8jISHl7e2v48OEaOnSoZs2aZZ7TqVMnPfnkk/L29lbjxo01btw4NW/eXNu3by+t0wIAAAAAAADggGiio1Tl5ORoz549CggIKDIeEBCgHTt2lHhMQkJCsfldu3ZVYmKicnNzi803DEObNm3SkSNH1KFDhztXPAAAAAAAAIAyhyY6SlVmZqby8/Pl6elZZNzT01Pp6eklHpOenl7i/Ly8PGVmZprHLl68qIoVK8rNzU09evTQ/Pnz1aVLlzt/EigT2LcfAAAAAAAAkuRi7QJQNplMpiKfG4ZRbOyP5v/veKVKlbRv3z5duXJFmzZtUkhIiBo1aqROnTrducJRJhTu279o0SK1a9dOb7/9trp166bDhw+rfv36xeYX7ts/YsQIvf/++/r2228VFBSkmjVrqk+fPpJ+27e/SZMmcnNz07p16zRkyBDVqlVLXbt2Le1TBAAAAAAAwC1iJTpKVY0aNeTs7Fxs1XlGRkax1eaFateuXeJ8FxcXeXh4mMecnJx0//33q0WLFnrxxRf19NNPKyIi4s6fBBwe+/YDwF/D3TwAAAAAHAlNdJQqNzc3+fj4KD4+vsh4fHy82rZtW+Ixfn5+xeZv2LBBvr6+cnV1tfjfMgxD2dnZf71olCns2w8Af03h3TxhYWFKSkqSv7+/unXrptTU1BLnF97N4+/vr6SkJIWGhmrs2LFas2aNeU7h3TwJCQk6cOCAhgwZoiFDhiguLq60TgsAAABAGcZ2Lih1ISEhGjRokHx9feXn56d33nlHqampCgwMlCRNmjRJP/74o5YtWyZJCgwM1IIFCxQSEqIRI0YoISFB0dHR+vDDD83vGRERIV9fXzVu3Fg5OTmKjY3VsmXLLK4cBiy5G/v216lTR9KNffvvvfdeZWdny9nZWYsWLWLffgAO5+a7eSQpMjJScXFxWrx4cYl3iN18N48keXt7KzExUbNmzTJvifW/W7ONGzdO7733nrZv386WWAAAAADuOproKHX9+vVTVlaWpk2bprS0NDVr1kyxsbFq0KCBJCktLa3IajUvLy/FxsYqODhYCxcuVN26dTVv3jzzL9aSdPXqVQUFBens2bMqX768mjRpovfff1/9+vUr9fODY2DffgC4fYV387z88stFxv/M3TzR0dHKzc0tdteZYRj6+uuvdeTIEb3++ut39gQAAAAAoAQ00WEVQUFBCgoKKvG1mJiYYmMdO3bU3r17Lb7f9OnTNX369DtVHsqw0ti3X5JatGih5ORkRURE0EQH4DC4mwcAAACAI2JPdAC4Cfv2A8Bfdzfv5tm9e7dmzJihkJAQbd68+c4VDQAAAAAWsBIdAP4H+/YDwJ/D3TwAAAAAHBFNdAD4H+zbDwB/zs138zz55JPm8fj4ePXu3bvEY/z8/PTFF18UGeNuHgAAAAC2hCY6AJSAffsB4M/hbh4AAAAAjoYmOgAAAO4Y7uYBAAAA4GhoouP2rbD8YDCHM8CwdgUAANgd7uYBAAAA4EicrF0AAAAAAAAAAAC2iiY6AAAAAAAAAAAW0EQHAAAAAAAAAMAC9kQH4HjYtx8AAAAAAAB3CCvRAQAAAAAAAACwgJXoAAAA+A138wAAAABAEaxEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAAAAAAAAAACygiQ4AAAAAAAAAgAU00QEAAAAAAAAAsIAmOgAAAAAAAAAAFtBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGDBn2qiL1q0SF5eXnJ3d5ePj4+2bdv2u/O3bNkiHx8fubu7q1GjRoqKiio2Z82aNXrooYdUrlw5PfTQQ/rkk0/+TGkAAABAmUEuBwAAAO6+226ir1q1SuPHj1dYWJiSkpLk7++vbt26KTU1tcT5KSkp6t69u/z9/ZWUlKTQ0FCNHTtWa9asMc9JSEhQv379NGjQIO3fv1+DBg1S3759tXPnzj9/ZgAAAIADI5cDAAAApeO2m+hz5szRsGHDNHz4cHl7eysyMlL16tXT4sWLS5wfFRWl+vXrKzIyUt7e3ho+fLiGDh2qWbNmmedERkaqS5cumjRpkpo0aaJJkyapc+fOioyM/NMnBgAAADgycjkAAABQOlxuZ3JOTo727Nmjl19+uch4QECAduzYUeIxCQkJCggIKDLWtWtXRUdHKzc3V66urkpISFBwcHCxOb8X1rOzs5WdnW3+/OLFi5KkS5cu3c4p3THXr1y2yn/XGi5ds3YFpchK19PdwDXqoBzkGuX6dGBco3anTF2jVrw+CzOrYRh/6nhyuWV8vTowfqbYnTJ1jTrI9SlxjTosrlG7xDVaGv/ZW8vlt9VEz8zMVH5+vjw9PYuMe3p6Kj09vcRj0tPTS5yfl5enzMxM1alTx+IcS+8pSREREZo6dWqx8Xr16t3q6eBPKv6v7sBGVLF2BfgTuEZhy8rU9SlxjdqhMnWN2sD1efnyZVWpcvt1kMshlbGvV8kmvmZxe8rUNcr1aZe4RmHruEZLzx/l8ttqohcymUxFPjcMo9jYH83/3/Hbfc9JkyYpJCTE/HlBQYHOnz8vDw+P3z0Of82lS5dUr149nTlzRpUrV7Z2OUAxXKOwZVyfsHVco6XHMAxdvnxZdevW/UvvQy4vu/h6ha3jGoWt4xqFreMaLR23mstvq4leo0YNOTs7F1uJkpGRUWzFSqHatWuXON/FxUUeHh6/O8fSe0pSuXLlVK5cuSJjVatWvdVTwV9UuXJlvoBh07hGYcu4PmHruEZLx59ZgV6IXI5CfL3C1nGNwtZxjcLWcY3efbeSy2/rwaJubm7y8fFRfHx8kfH4+Hi1bdu2xGP8/PyKzd+wYYN8fX3l6ur6u3MsvScAAABQlpHLAQAAgNJz29u5hISEaNCgQfL19ZWfn5/eeecdpaamKjAwUNKN2zl//PFHLVu2TJIUGBioBQsWKCQkRCNGjFBCQoKio6P14Ycfmt9z3Lhx6tChg15//XX17t1bn332mTZu3Kjt27ffodMEAAAAHAu5HAAAACgdt91E79evn7KysjRt2jSlpaWpWbNmio2NVYMGDSRJaWlpSk1NNc/38vJSbGysgoODtXDhQtWtW1fz5s1Tnz59zHPatm2rlStXavLkyQoPD1fjxo21atUq/f3vf78Dp4g7qVy5cpoyZUqxW3YBW8E1ClvG9QlbxzVqX8jlZRtfr7B1XKOwdVyjsHVco7bFZBQ+TQgAAAAAAAAAABRxW3uiAwAAAAAAAABQltBEBwAAAAAAAADAAproAAAAAAAAAABYQBMdAAAAAAAAAAALaKIDAAAAAAAAAGABTXQAkGQYhiRp586dOnDggJWrAW4ovC4Be1JQUCBJysnJsXIlAAB7RC6HLSKXwx6Ry+8smuiwSYU/oPhCR2kxmUz66quv5O/vr/T0dOXm5lq7JJRh2dnZkm5cl4A9KSgokJOTk/bv36/w8HBlZWVZuyQAdwDZHKWJXA5bQi6HvSKX33k00WGTTCaT1q9fr8jISF27ds3a5aAMyMrK0qFDhzRjxgwFBATI1dXV2iWhjDpx4oRCQ0P1wQcfWLsU4LbcHNRbtmwpV1dXeXh4WLssAHcA2RyliVwOW0Euh70il98dNNFhUwpXuSQlJenZZ5/VvffeKzc3NytXBUd35MgReXp66q233lL16tWtXQ7KsO+//16PPfaYLly4YO1SgNtSGNQPHz4sPz8/vfrqq5o+fbq1ywLwF5HNUdrI5bAV5HLYK3L53UMTHTbFZDJp//792rdvn0aMGKGBAwfKyYnLFHdH4S+GDz74oCZMmKCzZ88qJSVF+fn5Vq4MZdHRo0fVuXNnDRgwQJGRkRo4cKC1SwJuSWFQP3TokPz9/dWwYUOFhYVJEt9PATtHNkdpIZfDlpDLYa/I5XeXyeDpCLARhmEoNzdX9evXV0ZGhvr06aOPP/7Y/Bp7kOFOsXQ9/ec//9Fbb72lZcuWqX///laoDGVVQUGBJkyYoAsXLmjp0qWSbjQuMjMzlZ6ersOHD+uxxx6Th4cH3wthU26+VdTPz09NmzbVPffcoxYtWmjGjBmqWLGieQ4A+0I2R2kgl8PWkMthr8jldx//crAJheHJzc1N+/fvV5MmTbRr1y7t2rWLkI47qvB62r59u2bMmKEJEyYoJiZGkvTmm29qzJgxeu655/TRRx9Zt1CUGdnZ2XJyctLx48eVk5Mjk8kkk8mkzz77TC+++KLatm2rYcOGqW3btkpISJD022otwNqcnJx04MABtWzZUqGhodq9e7e6dOminTt3KjQ0VFevXpWTk5MKCgqsXSqA20A2R2kgl8PWkMthz8jldx9NdFhV4Q+cK1euKC8vT+fPn5enp6c2bdqkvLw8TZgwQcnJyVauEo7EZDJp7dq16t69u06cOKHU1FTNmjVLPXv2lCTNmTNHL7zwgoYOHarly5dbuVo4uqSkJD3//PNKTU1V06ZN9fPPPysqKkqhoaEaM2aMXF1d9e677+rs2bOqUqWKXnnlFUmieQGrKwzf+fn5SkhIUHh4uCZPnizpxurBnj17avfu3Zo0aRKBHbAjZHOUJnI5bAm5HPaKXF562M4FVlO48iA2NlZvv/220tLSVLduXQ0ZMkS9e/dWWlqafH19df/99ysqKkre3t7WLhkOICUlRQEBAQoJCdGoUaN07NgxtWnTRgMGDND8+fPN80aOHKnPP/9cx44dU6VKlaxYMRzV/v375ePjoxdffFGvv/669u7dq2nTpuno0aP69ddfNXPmTLVv31733nuvJGn69OmKjY3VN998o3Llylm5epRlhbeBnjt3TsnJyfLy8lKjRo0k3Qjvzs7OysnJ0RtvvKH169erdevWioiIUIUKFbiFFLBhZHOUNnI5bAW5HPaKXF66aKLDqr744gv17dtXU6dOVYMGDRQbG6vly5dr3759at68udLT0/X3v/9d1apV06pVq/Tggw9au2TYqcJfDL/77juNGDFC33//vU6fPi1/f391795dUVFRkqStW7eqQ4cOkqSffvpJnp6e1iwbDurw4cNq3bq1wsLCFBoaar4+L1y4IJPJJBcXF1WsWLHIMUOGDJEkvfPOO3J1dbVG2YA5bB88eFADBgxQs2bNFBgYaP6+efOcmwN7mzZt9Oqrrxa7rgHYFrI5SgO5HLaEXA57RS4vfS7WLgBl17Vr17RkyRJNmzZN//nPf3Tu3DlNnDhRI0aMUPPmzZWfn6/atWtrx44d+uc//yl3d3drlww7VBiCzp8/Lw8PDzk7O6tGjRr67rvv1LdvX3Xr1k0LFiyQdGMFwsqVK+Xh4aGmTZsS1HFXHDx4UB07dlTNmjUVGBgo6bdVAtWqVZNUdG/Fq1ev6rXXXtP69eu1detWgjqsxjAMOTk56dChQ2rfvr2ef/55DR48WE2bNi0yz8nJSXl5eXJzc9NLL70kZ2dnLVu2TOXKlVNERAS3PQM2imyOu41cDltDLoe9IpdbByvRYTUXL15Uq1attHz5cv3tb39Ty5Yt1aNHD7399tuSpOXLl8vHx0cPPfSQ+QcZ8Gd88803evfdd7VixQqdOXNGfn5+OnfunIYPH6533nnHPC8kJER79+7V6tWrVaNGDStWDEdV+KT0Rx99VC4uLqpTjHwHRgAAIglJREFUp45mzJih+vXrl3g7XUxMjDZv3qyvv/5an332mVq2bGmlyoEbfvnlFz355JNq3bq13njjjSKvXb58Wbm5uapevbokKTc3V66ursrJydG8efP09NNPq2HDhlaoGsCtIJujNJDLYSvI5bB35PLSx+Y3sJpy5crJx8dHW7Zska+vr3r27KlFixZJkn7++Wdt3LhRSUlJ7NOEv+zo0aPatm2b8vLyVK9ePX3wwQdyd3dXbm6utmzZop07dyokJERLly7V/PnzCeq4Kw4dOqSWLVvq5Zdf1ubNm9WnTx+dOnVKoaGhOnPmTLEHvKSkpGjnzp2qXLmyNm7cSFCH1dx8XV66dEnnz5/XP/7xD/PYtm3bNGPGDD3yyCPq2bOn3nzzTUmSq6ureeXLhAkTCOqAjSObozSQy2ELyOWwV+Ry62I7F5SKwlv3srOz5ebmJpPJJHd3d917770KCwtTt27dFBkZaV7RMmfOHO3atUuvvvoqIR23rPA6K/zfQg8++KCcnJyUm5srFxcXdezYUZ9++qlGjRqljRs3qmLFiqpSpYo2b96shx9+2IpnAEd1/fp1nThxQjNnztRLL70kSRo1apQkacWKFQoNDdVrr72mevXqma9fLy8vvf7663J1dVX58uWtWT7KsMJm2YEDB5SbmysPDw+dOXNGFy9eVE5OjpYsWaLo6GhVq1ZNPXr0UEFBgaZPny4vLy89/fTTcnEhagK2iGyOu41cDltFLoe9IpdbH/+CKBUmk0nr1q3TW2+9papVq8rPz08hISGaO3euzp49q+3bt2vixIny8PBQSkqKPvnkE23evFn169e3dumwI4UB3WQyKTEx0fzwq5o1a8rZ2Vl79uxR+/btJUkBAQHasWOHLly4ICcnJ9WqVUtVq1a1YvVwVCdPntScOXM0cOBAPf7445J+u51u1KhRMplM+uCDD4oE9sLb5CtXrmzl6lGW3RzUW7RooSlTpmjKlCl67rnnNGDAADVu3FipqamaMWOG/vWvf6lZs2Y6d+6cvv76ax0/ftza5QP4HWRz3G3kctgicjnsFbncNtBER6nYsWOHBg4cqH//+9+6fPmywsPDdeTIEb399tv6+OOPFRYWpsOHD2vHjh1q0aKFvv3222IPRAAsmT59uvbt26fVq1crPz9f586d08iRI3X8+HHVqlVLV65c0bVr1/Tuu+8qKSlJnTp1Uu3ateXs7KwmTZpYu3w4uNTUVC1btkxXrlxR+fLl1aJFC/PtdC4uLuaHGH3wwQcKDw/X1KlT1aBBAytXjbLu5qDepk0bvfLKK5oyZYokae7cuXrsscd07do1tWnTpsj1WrFiRdWqVUs1a9a0VukAbgHZHHcLuRy2jFwOe0Qutx08WBR3zc237sXFxWn//v166aWXdPXqVX311Vd67rnn9O9//1vvvvuupBt/ATYMQ87OzjyoCLcsPz9fX331lby8vPTQQw+ZxzMzM+Xq6qqzZ89qz549eumll1SzZk25uLjo8uXLOnfunNq2bas1a9aocuXKPJUad9yVK1fk5uYmNzc3bdq0ScOHD1f79u314osvqkWLFpJkDuyS9M4772j+/Plq27atFi5cyO12sJrCoH7kyBG1bdtWvXv31tKlSyX9tlqrJIZhKDw8XB9++KG+/vprfukEbAzZHHcbuRy2ilwOe0Uuty18J8BdURjSd+/erXPnzumDDz4wr16pUKGCevfurffee0+DBw+Wq6urFi1aZPGLHyhJ4Q8TZ2dnde3aVS4uLtqyZYtee+01xcXFqUaNGjIMQ02bNlXTpk21fft2ZWZmatWqVfrpp5909OhReXl5qUqVKtY+FTigs2fP6v/+7/80dOhQ9enTR507d9aSJUs0fPhwGYahCRMmqEWLFnJxcTEH9pEjR8rV1VWPPfYYQR1WU/i9dd++fWrXrp1+/fVXpaam6tChQ3rooYfk6upabH9b6cZDjD799FO999572rhxI0EdsDFkc9xN5HLYMnI57BW53PbwVBjcFSaTSZ999pn8/PwUFhamL7/8UgkJCbpw4YIkycXFRb1799b777+vqKgovfjii1auGPak8IfJ8ePHdeTIEbm4uCg3N1fnz5/X/v371bt3b0k3rsNff/1VktSwYUNduHBBrq6uuu+++/TYY4/Jy8vLmqcBB1ajRg1dunRJ8+fP17p165SdnW0O7N9++61mzZqlffv2SZI5sEvSkCFDCDmwKicnJ+3fv1+PPvqoXnnlFV29elVHjhzR888/r8OHD0tSsaD++eef64UXXtD+/fu1efNm84ouALaDbI67hVwOW0cuh70il9setnPBHVX4V7DMzEwNHjxY/fr1U8eOHXXw4EENGDBATz31lBYsWKCKFStKunHL1Jdffqm//e1v7IGH23L27Fnzw63279+vhx9+WFevXtWmTZv04osv6sEHH9S6devM87dt26b+/ftr586duu+++6xVNsqAwocPXblyRU899ZTOnz+vl19+Wb169VK5cuXMt5C2a9dO//nPf/TII49Yu2TA7NKlS3r88cfVrl07zZgxQ5KUkZEhHx8fNWzYUFFRUSXui5yYmKgGDRqw5yJgY8jmKA3kctgqcjnsGbnc9tBExx1x8y0kmzZt0ty5c+Xk5KT58+eb/3q7efNmPf7443rqqae0cOFCVahQwZolw84dOXJEvXr10rVr13ThwgV98803evTRR3X16lXFx8frP//5T5HAvmHDBo0YMUJJSUmqXr26lauHoyr8Xpidna1y5cpJurHaqm7dugoJCSkS2EeNGiVvb29Nnz5dDz/8sJUrB35z+PBh8162hXst/vzzz2rVqlWxwF64AhGAbSGbozSRy2GLyOVwBORy28K/Lu6oY8eOydvbW/Hx8Vq3bp1Onz5tfq1Tp076/PPP9cUXX2jw4MG6evWqFSuFvatdu7YeeOABdenSRUOHDlXHjh21e/duVahQQV26dNGbb76pI0eOmG8hDQgI0M6dOwnquCuOHTumXbt2yWQyKTc31xzU58+fr4sXL+ratWuaOXNmkVtI33rrLZ0+fVoeHh5Wrh648Ytmfn6+JJmDen5+vlxdXZWXl6eaNWtq7969OnXqlAIDA823kBLUAdtGNkdpIJfDlpDLYe/I5baLf2HcESaTSV988YUefPBBXb9+XQcOHFDlypX15ptvKiUlxTyvU6dOWrVqlXbv3q2LFy9asWLYk4KCAvP/L7x5pkqVKgoODtamTZvUuXNnPfPMM+rYsaMSExPNgX327Nnavn27+vbtK0ny9PS0Sv1wfG+88YbatGmjb7/91vwgtpkzZ2rKlCn68ssvzSutIiIitH79el2/fl3dunXTjh07VLduXStXD9zg7OysU6dOKTk5WRcuXJCzs7Mkmfe3LQzsP/74o/r166cffvjByhUDsIRsjruFXA5bRy6HIyCX2ygDuAN+/PFH47XXXjMWLFhgHvv++++NihUrGk8++aRx8uTJIvOvXbtW2iXCTuXn5xuGYRjHjx83du7caVy/ft382vnz541BgwYZS5YsMTIyMoynnnrKKF++vLF7927DMAzj8uXLxrp164xjx45ZpXY4vlOnThmGceM6HThwoFGhQgXj2LFjxvz5841q1aoZcXFx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9fXr12v8+PFq3ry52rRpo4EDB2r79u3y9vZWTEyM6tWrp4yMDGueAsqQ+++/XxEREbp+/brCw8P1008/qX///tq+fbvi4uL09ttvq3fv3mrZsqUmT55s7XKBYitOL1y4oPPnz8vX17fInMLGm5OTk9577z0NGzZMnp6epVorAMvI5igN5HLYE3I57A253P7RREeJqlWrpjp16ui7777TBx98oKefflppaWl64okn9Msvvyg8PFySzE8K/vXXX1WjRg1VrVrVilXD3ty81+KoUaN08eJFPfjgg1q9erUSEhI0efJkjRkzRjk5OVqyZIk2btyos2fP6tNPP5UkPfLII/r666/VqFEj654IypQHH3xQ8+fPl5OTk8LDw7VlyxZJUtWqVTVo0CBNnz5dO3fuVMuWLa1cKcqqm2+jL2x8HD9+XNKNxsjNr+fn55vn7NixQ5988okk6d1339WDDz5YWiUD+ANkc9xt5HLYI3I5bB253LHQREeJKleurMcff1wrV67UoEGDNGbMGNWpU0eenp6aPHmyVq5cqbCwMElSVlaW1q5dK5PJxN5MuGWFQX3//v1q2bKl6tevrypVqui5555TzZo19eSTTyo6OlpTp07V9OnT1bdvX3Xs2FG+vr7avXu3cnNzJUlubm5WPhOURX/72980f/58mUwmRUREaMeOHUVed3FxsVJlwI1VK8eOHVNQUJAkafXq1erdu7dOnDihli1bysPDQ5MnT1Zubq6cnZ3Nx33yySf68ssvzStZAdgOsjnuJnI57Bm5HLaMXO5Y+G6CYgzDkLu7u7y8vJScnKzGjRvr4sWLun79uipUqKBnnnlGJpNJ06dP13//+19Vr15dWVlZWr9+vWrXrm3t8mEHCoP64cOH1aZNG02ePFmvvPKKJKlTp05q1aqV0tLSVLNmTVWvXt18XF5envLy8uTj42O+xQmwlr/97W+aN2+eQkJC9OKLL2ru3Llq06aNtcsCJEknT55UVFSUjh07pk2bNikmJkaNGzeWJMXExKh3797q3LmzQkNDJUkbNmxQdHS0vv32W/NKVgC2gWyOu4lcDkdALoctI5c7Dh4siiIMw5DJZJJhGNq4caPOnDmj5ORkbdu2TT169NBLL72kcuXK6fr16zp//ry++uoreXh4qEWLFuYHHAG/pzCoHzx4UP/4xz9Us2ZNHT58WJKUk5Nj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",
      "text/plain": [
       "<Figure size 1500x1500 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "dataset_names = full_df['dataset'].unique()\n",
    "model_names = ['iTransformer', 'TSMixer', 'NHITS', 'PatchTST']\n",
    "\n",
    "fig, axs = plt.subplots(2, 2, figsize=(15, 15)) \n",
    "bar_width = 0.35  \n",
    "\n",
    "axs = axs.flatten()\n",
    "\n",
    "for i, dataset_name in enumerate(dataset_names):\n",
    "    df_subset = full_df[(full_df['dataset'] == dataset_name) & (full_df['metric'] == 'mae')]\n",
    "    mae_vals = df_subset[model_names].values.flatten()\n",
    "    df_subset = full_df[(full_df['dataset'] == dataset_name) & (full_df['metric'] == 'mse')]\n",
    "    mse_vals = df_subset[model_names].values.flatten()\n",
    "    \n",
    "    indices = np.arange(len(model_names))\n",
    "    \n",
    "    bars_mae = axs[i].bar(indices - bar_width / 2, mae_vals, bar_width, color='skyblue', label='MAE')\n",
    "    bars_mse = axs[i].bar(indices + bar_width / 2, mse_vals, bar_width, color='orange', label='MSE')\n",
    "    \n",
    "    for bars in [bars_mae, bars_mse]:\n",
    "        for bar in bars:\n",
    "            height = bar.get_height()\n",
    "            axs[i].annotate(f'{height:.2f}', \n",
    "                            xy=(bar.get_x() + bar.get_width() / 2, height),\n",
    "                            xytext=(0, 3),\n",
    "                            textcoords=\"offset points\",\n",
    "                            ha='center', va='bottom')\n",
    "    \n",
    "    axs[i].set_xticks(indices)\n",
    "    axs[i].set_xticklabels(model_names, rotation=45)\n",
    "    axs[i].set_title(dataset_name)\n",
    "    axs[i].legend(loc='best')\n",
    "\n",
    "plt.tight_layout()\n",
    "\n",
    "plt.savefig('model_performance_plots.png')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "neuralforecast",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
